Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: Ternary operators: a hinderance, not a help

by Joost (Canon)
on Aug 09, 2005 at 15:40 UTC ( [id://482261]=note: print w/replies, xml ) Need Help??


in reply to Ternary operators: a hinderance, not a help

update: the indented block is irrelevant now, with the update in the OP
Your examples are not equivalent. Your "if" case should look something like this:
my $number = do { if ($logical_test) { $value } else { 0 } }

Note that there is no automatic assignment of the 0 value. Doesn't make much difference here, ofcourse, but for more complicated cases its possible that those assignments have side-effects, or just take a lot of time.

Anyway, I would not recommend using ?: in very complex statements, because the ? and : tend to get drowned. But then, I would not recommend using statement modifiers in such a case either:

$bla = $some_really_long_calculation_that / $you_just_don_t * $want_to +_read_all_the_way_to_the_end if $something;

Replies are listed 'Best First'.
Re^2: Ternary operators: a hinderance, not a help
by Tanalis (Curate) on Aug 09, 2005 at 15:47 UTC
    I .. wouldn't have written the if that way, either, though .. :)

    I've changed the example in the OP to make it clearer - thanks :)

        As an aside: in Ruby where if is an expression not a statement you can write something very close without all the extraneous squiggles.

        number = if logical_test value else 0 end

        Not to mention case is also an expression and can be used similarly.

        zerg = case foo when "bar" Hydralisk.new when "baz" more_creep() else raise "Too few Starcraft references" end

        --
        We're looking for people in ATL

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://482261]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (4)
As of 2024-03-29 07:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found