Using <=> is clever, I think. And by that I mean that it invokes a less common set of symbols to come to a result in a surprising and elegant way.
I'm not sure that is good, though. Assuming that if either variable is zero you should return 0, my first thought was
That is, anchor one, see if the other is the same, and if so return 1; otherwise, fall through and return 0.if ($left > 0) { if ($right > 0) { # both pos return 1 } } elsif ($left < 0) { if ($right < 0) { # both neg return 1 } } return 0;
I think this is bad because its a whole bunch of lines. On the other hand, I think its good because its dead obvious, and probably pretty fast (fewer compares and jumps than even the double '<=>' version).
ymmv. "What is good?", asked jesting Pilate, not waiting for an answer.
--woody
In reply to Re^2: Seeing if two numbers have the same sign
by WoodyWeaver
in thread Seeing if two numbers have the same sign
by grinder
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |