Rubyの魔神 このページをアンテナに追加 RSSフィード

   「Ruby」は宝石の魔神のイメージ(The Jinn of the Ruby)
   [VB] [VB6] [Android] [電子工作] [個人メモ] [仕事メモ] [アイデア] [TstLink] [開発] [CE] [LTSA] [自動化] [Qt] [OCaml] [TOOLS]
   [3Dプリンタ] [RAA] [Forge]   [機能別索引] [逆引きRuby] [マニュアル] [るびま] [標準ライブラリ] [るりまサーチ] [Try! Ruby] [PRaggerまとめ] [ピジョン・ブラッド]
   [Rubyコーディング規約] [プログラミングのオキテ] [Rubyist SNS] [TOOLBIS]
   [RubyネットワークProg] [druby] [コードなにがし] [RDocテンプレ] [Ruby/Tkサンプル]
   [WAVE] [Xperia] [github] [twitterなど] [Java] [EA] [マクロ]

2014-09-24

無名関数の利点

無名関数の利点 - Rubyの魔神 を含むブックマーク はてなブックマーク - 無名関数の利点 - Rubyの魔神 無名関数の利点 - Rubyの魔神 のブックマークコメント

Rubyの無名関数の利点というか使いどころが良くわからない。

p ->x,y{x+y}[3,4]

p (1..10).map{|x|->(t){t * 2}[x]}

こんな風に使い捨ての関数を使いたい時に使えば良いのだろうか?

http://blog.livedoor.jp/sasata299/archives/51541958.html

こちらの記事で、

ブロックを Proc オブジェクトにするのは実は簡単で、メソッド定義の仮引数の最後に & 付きパラメーターを追加することで、Ruby がこのパラメーター (&hoge) をブロックとして扱い、hoge は Proc オブジェクトへの参照を持ちます。この辺は Ruby の黒魔術?ですね。

と書いてあったので試して見ると確かに動きました。

p (1..10).map(&->(t){t * 2}) #[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

動き的には

p (1..10).map{|x|x*2}

と同じですが、|x|の仮引数を作らなくてもいいのが楽しいかも。

トラックバック - http://ruby.g.hatena.ne.jp/garyo/20140924