奇怪的Ruby行为与||和&&

时间:2014-01-01 14:34:43

标签: ruby logical-operators puts

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

发生了什么事?我正在使用1.9.3

编辑:我忘了把回报为零,现在它是有道理的,这要归功于第一个答案:)

1 个答案:

答案 0 :(得分:3)

没什么奇怪的,因为:puts方法返回nil&&运算符的第二个参数没有被评估。但是,在第一种情况下,您同时调用:a,然后调用:b,因为:a方法返回nil