我想了解在這個Array類的contents_support?
方法中使用注入。 &
運營商的目的是什麼/它是如何工作的?我認爲這是按位運算符。我發現&
運營商這樣的解釋:在這種情況下使用&(&符號)是什麼意思?
可能二進制&操作最簡單的用途是在Array類。
&
是集合交集操作符,這意味着結果是兩個數組中的公共元素的集合。irb(main):001:0> [1,2,3] & [1,2,5,6] => [1, 2]
但到底是什麼,在這種情況下,如果true
作爲參數傳遞給inject
有些地方的對象(即局部變量items
)可能不接受的信息做出響應的意思。你能解釋一下contents_support?
的回報以及爲什麼&
是必要的嗎?上面提到的代碼片段解釋了&
在下面的代碼中考慮&
的正確方法嗎?
class Array
def contents_support?(message)
self.inject(true) { |all_ok, item| all_ok = all_ok & item.respond_to?(message) }
end
def thunk(message, *args)
if contents_support?(message)
self.each { |item| args.empty? ? item.send(message) : item.send(message, args) }
else
raise "Not all contents of #{self.inspect} respond to method #{message}"
end
end
end
謝謝,我認爲&必須&&使它成爲一個邏輯連接,但我猜這就是javascript只有 – BrainLikeADullPencil
'&'是按位'和'; '&&'邏輯上是'和'。 – Zabba
@Zabba:不要在Ruby中,感謝超載。 '&'只是一些二元運算符。 – 2013-01-04 00:55:23