Johannes Krude wrote:
> Christian G. Warden schrieb:
>> +$dmenu= ENV["DMENU"] || "dmenu -b"
>
> This is in ruby exactly the same, I think "or" is
> more readable then "||"

I agree that 'or' is more readable than '||' but keep
in mind that the '||' and 'or' operators are
*different* in terms of precedence.  Take a look at
this precedence table:

http://www.zenspider.com/Languages/Ruby/QuickRef.html#22

Notice that 'and' and 'or' have the lowest precedence
(even lower than '=') than all other operators.  As a
result, that statement is evaluated like this:

  $dmenu= ENV["DMENU"]

is the result of the above expression nil or false? 
If so, evaluate the stuff on the right-hand side of
the 'or':

  "dmenu -b"

And use this as the result of the overall expression
(the entire line).  So, if there is no $DMENU
environment variable, then nothing gets assigned to
the $dmenu global(!) variable.

To illustrate, consider this example:

>> x = nil or 5
=> 5
>> x
=> nil

Notice that the value of 'x' is NOT 5.  If you used
the '||' operator instead, then you get:

>> x = nil || 5
=> 5
>> x
=> 5

So the moral of the story is: stick with the C-style
boolean operators unless you really intend to do
something else.



Reply via email to