我对 Ruby 中的 and/&&/= 关键字有疑问。
ruby 文档说,上述关键字的优先级是:(1)&&、(2)=、(3)and。
我有我写的这段代码:
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
输出是:
1) 2 4 [预期]
2) 4 4 [为什么?]
出于某种原因,使用 && 会导致 a 和 b 都评估为 4?