Re: [RFC] Combined Comparison Operator
| From: | Davey Shafik | Date: | Thu, 13 Feb 2014 04:39:39 +0000 |
| Subject: | Re: [RFC] Combined Comparison Operator | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-72543@lists.php.net to get a copy of this message | ||
On 2/12/14, 11:25 PM, Yasuo Ohgaki wrote:
Hi Davey, On Thu, Feb 13, 2014 at 12:58 PM, Davey Shafik <davey@php.net> wrote:Yasuo, Sorting is definitely it's most compelling use. It cuts down on potentially quite a bit of code: function ($left, $right) {I've written up an RFC/Patch to gauge interest and get feedback on the addition of a combined comparison (aka: spaceship) operator. You can see the RFC at: https://wiki.php.net/rfc/ combined-comparison-operator This adds a new operator "(expr) <=> (expr)" that returns 0 if both operands are equal, 1 if the left is greater, and -1 if the right is greater. It works with all types (just as well as <, <=, >=, > work) and is great for usort() callbacks for example. Code available here (against 5.6): https://github.com/dshafik/ php-src/compare/add-spaceship-operator I'd love to get this into 5.6, not sure if we hit feature freeze yet. Also, not sure if it needs 2/3 majority, but assumed so as pow did? Thoughts? If there is interest, I'll start adding tests. They should be fairly trivial.Interesting shortcut operator. I feel closure function is for the task. I would vote 0, but close to -1 since it's only useful for sorting. Is there any other use cases? Regards, -- Yasuo Ohgaki yohgaki@ohgaki.net
if ($left[1] == $right[1]) {
return 0;
}
if ($left[1] > $right[1]) {
return 1;
}
if ($left[1] < $right[1]) {
return -1;
}
}
or (as per the RFC):
function ($left, $right) {
return $left[1] <=> $right[1];}