我经常发现自己这样做:
do_something if x && x == y
在其他作品中,如果x
不为零,则执行某项操作,其值为y
。
如果我可以做这样的事情会很好:
do_something if x &&== y
是否有运营商这样做?
回应评论:
x == y
- 问题在于,如果已知y
的值,它只测试存在(不是nil)。如果y
本身为nil
,则检查失败。所以你最终可能会这样做:
y && x == y
x ||= y
- 如果y
为零,则会将x
的值分配给x
。那不是我想要的。 x &&= y
因同一原因无效 - 如果x
存在,它会将y
的值更改为x
。
示例:在我当前的场景中,我想检查用户是否已将与其关联的令牌传递给控制器,但我还想确保已分配令牌。类似的东西:
do_something if user.token && user.token == params[:token]
答案 0 :(得分:5)
如果您使用ruby
> 2.3.0
您可以使用&.
运算符:x&.== y
。它基本上执行.try
在Rails
中执行的操作,如果操作数的值不同于nil
它调用方法并返回其结果。如果值为nil
,则会返回nil
,因此您可以执行以下操作:do_i_exist&.does_the_result_exist&.nil?