2017-07-11 48 views
1
action&.!=:click 

有人請向我解釋這是什麼意思,在紅寶石和我可以得到一些解釋?我試圖尋找紅寶石的文件,但這樣的「鏈接」運營商在Ruby中,&。!=是什麼意思?

:click沒有運氣符號

!=不等於

,但我不知道有關&.

+0

https://aaronlasseigne.com/2016/01/04/rubys-new-安全導航不等於運營商/ –

+0

這是一個可怕的方式來寫'行動&&行動!=:點擊' –

回答

2

什麼樣子像中間的一個運營商(&.!=)實際上是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) 
+0

等等,你的答案是怎麼回事通過dup關閉? –

+0

您是否開始編寫它_before_我關閉了它? –

+3

「實際上是2個操作符」 - _actually_它是一個操作符和一個方法調用:)如果我們將&&作爲操作符,那就是。 –