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