参见英文答案 >
Difference between “and” and && in Ruby?6
我有一个关于Ruby中的&& / =关键字的问题.
我有一个关于Ruby中的&& / =关键字的问题.
红宝石文件说,提到的关键字的优先级是:(1)&&(2)=,(3)和.
我有这段代码片段:
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?
解决方法
我不太明白你问的问题.我的意思是你自己已经给出了答案,甚至提出了这个问题:&&绑定比=更紧,而且比
因此,在第一种情况下,表达式如下评估:
( 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