I was under the impression that ||
and or
were synonymous.
Setting variable with or
does not hold value; why?
>> test = nil or true
=> true
>> test
=> nil
>> test = false or true
=> true
>> test
=> false
Works 'as expected' with ||
>> test = nil || true
=> true
>> test
=> true
Same between and
and &&
. I was once bited by this gotcha, then I realize that although and
is more readable than &&
, that does not mean it always more suitable.
>> f = true && false
=> false
>> f
=> false
>> f = true and false
=> false
>> f
=> true
>>
or
has lower precedence than =
.
test = nil or true
is the same as
(test = nil) or true
which is true
, while setting test
to nil
.
||
has higher precedence than =
.
test = nil || true
is the same as
test = (nil || true)
which is true
, while setting test
to true
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With