Re: [RFC] Combined Comparison (Spaceship) Operator
| From: | Andrea Faulds | Date: | Thu, 22 Jan 2015 23:39:30 +0000 |
| Subject: | Re: [RFC] Combined Comparison (Spaceship) Operator | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-81001@lists.php.net to get a copy of this message | ||
Hi Larry,
> On 22 Jan 2015, at 22:48, Larry Garfield <larry@garfieldtech.com> wrote:
>
> This looks potentially quite useful, especially for multi-stage comparisons as you note.
> Mainly it would mean I don't have to remember which direction is positive or negative, as I can
> never get that right without looking it up. :-)
Glad you like it. I, too, sometimes have trouble remembering what direction it goes in.
> The examples say nothing about mixing types, though. Eg, what would these return:
>
> return 0 <=> "0"
>
> return "" <=> 0
>
> return 1 <=> [1, 2, 3]
>
> Ignoring object property names and going by the order of the property definition seems like
> asking for trouble, too.
>
> There may be easy logical answers to the above given PHP's existing type juggling, but
> they should be called out explicitly in both the RFC and in any subsequent documentation.
The behaviour would be the same as the current <, <=, ==, >= and > operators. If >
currently returns TRUE, then it is 1, if == currently returns TRUE, then it is 0, and if <
currently returns TRUE, then it is -1. Despite all the ridiculousness of our existing comparison
rules, apparently <, == and > returning TRUE are mutually exclusive, thank goodness.
I don’t really want to cover this behaviour in the RFC, because explaining it in full is a
considerable effort and the rules it uses are not new, they are the ones PHP already uses. The
behaviour for arrays is perhaps a little odd, but that is our existing behaviour, and I’d rather
not introduce inconsistency by making <=> use different rules to the other operators.
I agree, however, that documentation for this feature should mention the behaviour, possibly just
linking to our existing documentation on type juggling.
Thanks.
--
Andrea Faulds
http://ajf.me/