> 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

Reply via email to