什么&。!=在Ruby中意味着什么?

时间:2017-07-11 11:29:52

标签: ruby

action&.!=:click

有人可以向我解释一下这在红宝石中是什么意思,我可以在哪里得到一些解释?我尝试搜索ruby文档,但没有运气这种“链接”运算符

:click是符号

!=不相等

但我不知道&.

1 个答案:

答案 0 :(得分:2)

看起来中间的一个运算符(:click)实际上是1个运算符和1个方法调用:&.后跟!= 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)

甚至:

LOAD CSV WITH HEADERS FROM 'file:///C:/citylist2.csv' as line fieldterminator ',' 
MERGE (c1:City {id: line.`Origin City`})
MERGE (c2:City {id: line.`Destination City`})
MERGE (c1)-[r:SALES{id: line.Route, sales: line.Sales}]->(c2);