我有一个关于 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 [Why?]
出于某种原因,使用 && 会导致 a 和 b 的计算结果均为 4?
我不太明白你问的问题。我的意思是,你有already自己给出了答案,before甚至问这样的问题:&&
结合得比=
while and
结合不那么紧密=
.
因此,在第一种情况下,表达式的计算如下:
( a=f(2) ) and ( b=f(4) )
( a= 2 ) and ( b=f(4) )
2 and ( b=f(4) ) # a=2
2 and ( b= 4 ) # a=2
2 and 4 # a=2; b=4
4 # a=2; b=4
对于第二种情况,评估如下:
a = ( f(2) && ( b=f(4) ) )
a = ( 2 && ( b=f(4) ) )
a = ( 2 && ( b= 4 ) )
a = ( 2 && 4 ) # b=4
a = 4 # b=4
4 # b=4; a=4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)