contents_support?
このArrayクラスのメソッドでのinjectの使用を理解しようとしています。&
オペレーターの目的は何ですか/それはどのように機能していますか?ビット単位の演算子だと思います。&
私はこの演算子の説明を見つけました:
おそらく、二項&演算子の最も簡単な使用法は、Arrayクラスです。
&
はset-intersection演算子です。これは、結果が両方の配列の共通要素のコレクションであることを意味します。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