我经常发现自己这样做:
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-这将分配的值y来x如果x是零.那不是我想要的.x &&= y由于同样的原因,它不起作用 - 它将值更改x为yif if xexists.
示例:在我当前的场景中,我想检查用户是否已将与其关联的令牌传递给控制器,但我还想确保已分配令牌.就像是:
do_something if user.token && user.token == params[:token]
Run Code Online (Sandbox Code Playgroud)
如果您正在使用ruby>,2.3.0您可以使用&.运营商:x&.== y.如果操作数的值不同于调用方法并返回其结果,它基本上会.try执行Rails操作nil.如果值为nilreturn nil,则可以执行以下操作:do_i_exist&.does_the_result_exist&.nil?
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |