可能性の重複:
What does map(&:name) mean in Ruby?ルビの "&:"演算子の機能は何ですか?
私は&:
オペレータの機能を知りません以下
a.each_slice(2).map(&:reverse)
を持っていたコードスニペットに出くわしました。それはどのように機能するのですか?
可能性の重複:
What does map(&:name) mean in Ruby?ルビの "&:"演算子の機能は何ですか?
私は&:
オペレータの機能を知りません以下
a.each_slice(2).map(&:reverse)
を持っていたコードスニペットに出くわしました。それはどのように機能するのですか?
Rubyには&:
演算子がありません。あなたが見ているのは、に適用された&
オペレータです。メソッドの引数リストで
、&
オペレータは、そのオペランドをとり、それが(その上にto_proc
を呼び出すことによって)既にではなく、ブロックが使用されたかのようにメソッドに渡した場合、Proc
オブジェクトに変換します。
my_proc = Proc.new { puts "foo" }
my_method_call(&my_proc) # is identical to:
my_method_call { puts "foo" }
そこで問題は今になり、それがthe Rails documentationで見るのは簡単だ「Symbol#to_proc
は何をしますか?」:
列挙するのに特に有用である簡単なprocの、にシンボルをオンにします。例:あなたは、この関数に渡すオブジェクトにそのシンボルの名前でメソッドを呼び出しますラムダ関数を作成しているシンボルに
&
を付加することで
# The same as people.collect { |p| p.name }
people.collect(&:name)
# The same as people.select { |p| p.manager? }.collect { |p| p.salary }
people.select(&:manager?).collect(&:salary)
。アカウントにそのを取る:
ar.map(&:reverse)
することとほぼ同等です:
ar.map { |element| element.reverse }
です。重複した質問には答えないでください。ただ投票に投票してください。この質問はすでに尋ねられ、17(回)回答されましたが、知識をさらに広げて得られたものは何もありません。 –
私は質問を見て、私はそれに答えました。それ以降は重複としてマークされました。 –
これはすでに求められてとStackOverflowの上ここに答えてきた無未満17の他の質問の重複です:[理解\ [ClassOne Rubyで 'map(&:name)'とは何ですか?(http://())。 Ruby/Ruby on Railsのアンパサンドコロンのショートカット(http://StackOverflow.Com/q/1792683/)[http://StackOverflow.Com/q/1217088/] ://StackOverflow.Com/q/1961030/)、[Ruby: '&:symbol;構文](http://StackOverflow.Com/q/2096975/)、... –
... [Rubyの '&:last'とは何ですか?](http://StackOverflow.Com/q/2211751/)、[Rubyでは'&: '演算子とは何ですか?](http: /StackOverflow.Com/q/2259775/)、[このRubyコードで 'map(&:name)'とは何ですか?](http://StackOverflow.Com/q/2388337/)、[何ですか? Rubyでは 'Post.published.collect(&:views_count)'の ''&:views_count'](http://)を参照してください。 Ruby Procの構文(http://StackOverflow.Com/q/4512587/)、["(1..4).inject(&:+)" Rubyでの作業(http://StackOverflow.Com/q/5003257/)、... –
... [次のステートメント '&:property'?](http://StackOverflow.Com/q/5620411/)、[次のルビ構文では '&'の意味は何ですか?](http://StackOverflow.Com/q/5952175/)[なぜルビのプロパティで単項演算子を使うのですか? '' Array#map''はこのようなことをするためのパラメータをどのように持っていますか?](http://StackOverflow.Com/q/6289084/) 6716629 /)、そして[ルビの中では '&:'は何を意味するのか、それはシンボルと混じったブロックですか?](http://StackOverflow.Com/q/9188362/)。 –