I have a question regarding the and/&&/= keywords in Ruby.
The ruby docs say that the precedence for the mentioned keywords is: (1)&&, (2)=, (3)and.
I have this snippet of code I wrote:
def f(n)
n
end
if a = f(2) and b = f(4) then
puts "1) #{a} #{b}"
end
if a = f(2) && b = f(4) then
puts "2) #{a} #{b}"
end
The output is:
1) 2 4 [Expected]
2) 4 4 [Why?]
For some reason using the && causes both a and b to evaluate to 4?
if a = ( f(2) && b ) = f(4) then
– Littlest