Ruby中是否有"&& Equals"运算符

Reg*_*ieB 3 ruby operators

我经常发现自己这样做:

do_something if x && x == y
Run Code Online (Sandbox Code Playgroud)

在其他作品中,如果x不是零,则执行某些操作,并且其值为y.

如果我可以做这样的事情,那将是很好的:

do_something if x &&== y
Run Code Online (Sandbox Code Playgroud)

是否有运营商这样做?


回复评论:


x == y- 问题在于,如果y已知值,它只测试存在(不是nil).如果y是本身nil则检查失败.所以你最终可能会这样做:

y && x == y
Run Code Online (Sandbox Code Playgroud)

x ||= y-这将分配的值yx如果x是零.那不是我想要的.x &&= y由于同样的原因,它不起作用 - 它将值更改xyif if xexists.


示例:在我当前的场景中,我想检查用户是否已将与其关联的令牌传递给控制器​​,但我还想确保已分配令牌.就像是:

do_something if user.token && user.token == params[:token]
Run Code Online (Sandbox Code Playgroud)

hah*_*cho 6

如果您正在使用ruby>,2.3.0您可以使用&.运营商:x&.== y.如果操作数的值不同于调用方法并返回其结果,它基本上会.try执行Rails操作nil.如果值为nilreturn nil,则可以执行以下操作:do_i_exist&.does_the_result_exist&.nil?

请参阅:什么&.(&符号)在Ruby中意味着什么?