Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^3: A more concise way to map the contents of an array.

by LanX (Canon)
on Dec 30, 2012 at 13:55 UTC ( #1010921=note: print w/ replies, xml ) Need Help??


in reply to Re^2: A more concise way to map the contents of an array.
in thread A more concise way to map the contents of an array.

> Regarding your footnote, supposing i didn't need 0 for false, how would i do it? And how else can you represent false?

Just use the product of a doubled negation to get clear booleans!

Perl's definition of false covers different data types and context cases.

from perldata

A scalar value is interpreted as TRUE in the Boolean sense if i +t is not the null string or the number 0 (or its string equivalent, "0") +. The Boolean context is just a special kind of scalar context where +no conversion to a string or a number is ever performed.

(Null string here means either empty string "" or undef)

from perlsyn

Truth and Falsehood The number 0, the strings '0' and '', the empty list "()", and +"undef" are all false in a boolean context. All other values are true. Negation of a true value by "!" or "not" returns a special fals +e value. When evaluated as a string it is treated as '', but as a number +, it is treated as 0.

Cheers Rolf

) in this case  my @cell_contents = map { !!$_ } @$array_ref[3..10];

for me the most readable alternative!


Comment on Re^3: A more concise way to map the contents of an array.
Select or Download Code
Re^4: A more concise way to map the contents of an array.
by Amblikai (Sexton) on Dec 30, 2012 at 13:59 UTC

    So just to be clear, if i double negate something, i'll lose the original "value" and be left with the pure boolean representation of the data? That could prove useful!

    Thanks again for your reply!

      Yes ... negating means evaluating in boolean context!

      (well "pure" is a risky adjective in the sphere of Perl's DWIM flexibility ... ;)

      Anyway if this approach ever fails it certainly is a bug!

      EDIT:

      IMHO people prefer using 0 for false because it's easier to print and read than an empty string. But technically this is not necessary.

      Cheers Rolf

      ) lets say "well-defined"!

        Ok, thanks again for your help!

        Thanks for the welcome and the info!

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (18)
As of 2014-07-23 19:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (150 votes), past polls