2016-04-25 12 views
0

私は前にこの構文に遭遇したことがないRailsの構文意味Ruby on Railsを中>()`構文

options = ->(p) {{controller: 'clients', subdomain: "m.#{Rails.env}"}.merge!(p)}

にこのルビーの正確な意味は何ですか。

Googleでリソースを見つけることさえできませんでした。誰かがそれについてのチュートリアルを持っていますか?

+0

あなたはRubyのラムダにもっと深く掘り下げたい場合は、私がhttps://www.youtube.com/watch?v=hyRgf6Qc5pwでYouTubeに投稿それらについての会議のプレゼンテーションを持っています。スライドショーはhttps://speakerdeck.com/keithrbennett/ruby-lambdas-functional-conf-bangalore-oct-2014にあります。 –

+0

このSOスレッドは面白いかもしれません:http://stackoverflow.com/a/28215281/3033649 – markets

+0

あなたは 'options'を呼び出すための選択肢があります:' options.call(p) '、' options [p] '、' options.yield(p) '、' options === p'、そしてまだサポートされているが、その途中で出てきた 'options(p)'である。 –

答えて

5

これは単なるラムダ構文(Rubyバージョン1.9以降)です。古い構文:

options = lambda { |p| { controller: 'clients', subdomain: "m.#{Rails.env}"}.merge!(p)} 
+0

今は "stabby lambda"と呼ばれています。 – tadman

+0

"新規"は相対的です。私は個人的に2007年に存在していたことを覚えています。 –

+0

@JörgWMittag、そうです、2007年にRuby 1.9がリリースされましたが、以前のバージョンではこの構文がありませんでした。 – Ilya