in reply to Re^2: Better expression for $x = !!$y||0
in thread Better expression for $x = !!$y||0

I said shorter, I didn't say accurate :). But really, if you presume an overloaded ! that returns something other than perl's true and false values (and that's presuming an awful lot) there's nothing you can do to $y besides examine it in boolean context with if or ?:.
  • Comment on Re^3: Better expression for $x = !!$y||0

Replies are listed 'Best First'.
Re^4: Better expression for $x = !!$y||0
by TimToady (Parson) on Apr 20, 2005 at 00:30 UTC
    Just to let you know we fixed this, in Perl 6 this is written:
    $x = ?$y;
    And the standard operators like == are expected to return 0 or 1 when a boolean result is expected. (Boolean context will still accept any true value, as in Perl 5, and the short-circuit operators still return one of the input values as the "true" value.),

    Yes, you can still overload these to return something other than 0 or 1, but it would be construed as antisocial.

      in Perl 6

      ...

      Yes, you can still overload these to return something other than 0 or 1, but it would be construed as antisocial.

      That's exactly how I feel WRT doing this in perl5.
        Except Perl 5 makes no such guarantee. A lot of the built-ins return "" or 1 instead, for instance.
Re^4: Better expression for $x = !!$y||0
by Anonymous Monk on Apr 20, 2005 at 08:43 UTC
    I said shorter, I didn't say accurate.
    If it doesn't need to be accurate, $x=1 is pretty short.