【发布时间】:2023-03-15 23:03:02
【问题描述】:
action&.!=:click
有人可以向我解释一下这在 ruby 中是什么意思吗?我在哪里可以得到一些解释?我尝试搜索 ruby 文档,但这种“链接”运算符没有运气
:click 是符号
!= 不相等
但我不知道&.
【问题讨论】:
-
写
action && action != :click的方式太糟糕了
标签: ruby
action&.!=:click
有人可以向我解释一下这在 ruby 中是什么意思吗?我在哪里可以得到一些解释?我尝试搜索 ruby 文档,但这种“链接”运算符没有运气
:click 是符号
!= 不相等
但我不知道&.
【问题讨论】:
action && action != :click的方式太糟糕了
标签: ruby
中间的一个运算符 (&.!=) 实际上是 1 个运算符和 1 个方法调用:&. 后跟 !=,:click 作为参数:
action &. != :click
它检查action 是否不是nil 但不同于:click:
action = nil
action&.!=:click
# => nil
action = :not_click
action&.!=:click
# => true
action = :click
action&.!=:click
# => false
action = false
action&.!=:click
# => true
在我看来,这是一种滥用&. 的方式。 &. 被称为“安全导航运算符”,因为它可以防止您在 nil 对象上调用未定义的方法。
!= 是为任何对象定义的,因此在!= 之前使用&. 并不安全。
你可以写:
!(action.nil? || action == :click)
或
!action.nil? && action != :click
甚至:
![nil, :click].include?(action)
【讨论】:
&. 算作操作符,那就是。