Ruby中的/ \u0026\u0026的运算符优先级

前端之家收集整理的这篇文章主要介绍了Ruby中的/ \u0026\u0026的运算符优先级前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Difference between “and” and && in Ruby?6
我有一个关于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

猜你在找的Ruby相关文章