:何かのようにあなたが行うことができます。それはむしろ非合理的です(これをしないでください)が、可能です。
あなたがそうのようなあなたのselect
でチェックを行うことができますので、オブジェクトとメソッドを見つけるために管理しない場合:
o.select { |e| some_object.some_method(e) }
(重要な部分は、some_object
とsome_method
がすべてで同じにする必要があるということです繰り返し)
... Object#method
を使用すると、そのようなブロックを取得できます。それはto_proc
(&
-shorthandの要件)を実装しており、呼び出されたときにsome_method
をsome_object
に呼び出し、その引数を転送するものを返します。ちょっと好き:ちょっと
["abc", "def", "ghi"].select(&/c/.method(:=~))
:仕事をして、この特定のケースで
collection.select(&some_object.method(:some_method))
、/c/
とその方法=~
:
ここ
o.m(a, b, c) # <=> o.method(:m).to_proc.call(a, b, c)
はあなたが&
-shorthandでこれを使用する方法です冗長で読みやすさは比較的悪いです。
ここでもやり直してください。しかし、このトリックは他の状況で役立つことがあります。
は、あなたが使用する必要があります。
は具体的には、結果の配列が
pattern === element
が真であるすべての要素が含まれていますがブロック 'o.select {| e | ( 'c')} ' –' ['abc'、 'def'、 'ghi']。grep(/ c /) 'も同様に動作します。 – Stefan
あなたは "プレッツェルコロン"構文を使用しようとしていますが、@SebastiánPalmaのように、引数を受け入れません。プレッツェルコロンの構文の詳細については、次の2つのドキュメントを参照してください。http://technology.customink.com/blog/2015/06/ruby-pretzels/およびhttps://stackoverflow.com/questions/1961030/ruby-ampersand-コロンショートカット – anothermh