Question

def a
  puts 'a'
end

def b
  puts 'b'
end

p a || b #=> prints both 'a' and 'b' although it would only print a

p a && b #=> prints only a

What's going on? I'm using 1.9.3

Edit: I forgot puts returns nil, now it makes sense, thanks to the first answer :)

Was it helpful?

Solution

Nothing strange, since :puts method returns nil, the second argument of && operator didn't evaluated. However, in first case you've get the both call to :a, and then to :b, because :a method returned nil.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top