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


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

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

没什么奇怪的,因为:puts方法返回nil&&运算符的第二个参数没有计算。但是,在第一种情况下,您既调用了:a,又调用了:b,因为该方法返回:a nil

最新更新