> Note that the same /would/ be possible with union types if given precedence:
>
> function fn(): int|false {}
false is currently not supported in the union_types rfc.
Regards
Thomas
Fleshgrinder wrote on 21.04.2016 21:33:
> On 4/21/2016 6:33 PM, Thomas Bley wrote:
>> Hello Tom,
>>
>> with default return value I mean to return a certain value if nothing else is
>> returned (similar to method parameters with a default value).
>>
>> example 1:
>>
>> declare(strict_types=0);
>>
>> function my_strpos(string $haystack, string $needle): int = false {
>> return 42; // return 42
>> return false; // return false
>> return true; // return 1
>> return; // return false
>> }
>>
>> example 2:
>>
>> declare(strict_types=1);
>>
>> function my_strpos(string $haystack, string $needle): int = false {
>> return 42; // return 42
>> return false; // return false
>> return true; // fatal error
>> return; // return false
>> }
>>
>
> I definitely do not like the equal sign in there because it goes against
> all my mathematical knowledge; an int is false?!?
>
> Note that the same /would/ be possible with union types if given precedence:
>
> function fn(): int|false {}
>
> That being said, it is way too magic! A return without an argument is
> *void* and has to result in a `TypeError`. Really, start to think about
> the types as /checked annotations/ ...
>
> /**
> * @return int|false
> */
> function fn() {}
>
> function fn(): int|false {}
>
> ... are equivalent and the former does not suddenly return *false* on
> its own and hell it shouldn't.
>
> --
> Richard "Fleshgrinder" Fussenegger
>
>
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php