タグ

rubyとProcに関するrochefortのブックマーク (4)

  • Ruby の Proc オブジェクトと Method オブジェクトの違い (proc, lambda, ブロック, メソッドについて) - vivid memo

    プログラミング言語 Ruby 作者: まつもとゆきひろ,David Flanagan,卜部昌平(監訳),長尾高弘出版社/メーカー: オライリージャパン発売日: 2009/01/26メディア: 大型購入: 21人 クリック: 356回この商品を含むブログ (129件) を見る Ruby には、手続きを表すオブジェクトのクラスとして Proc クラスと Method クラスの 2 つのクラスがあります。 Proc オブジェクト *1 にはさらに proc と lambda の 2 種類があって、それぞれどう違うかというのがちょっとややこしいと思います。 次の記事などは結構参考になると思いますが、『プログラミング言語 Ruby』 を読んでさらに理解が深まったのでここにまとめておきます。 Rubyblock、Proc、lambda を理解する - このブログは証明できない。 とりあえずまと

    Ruby の Proc オブジェクトと Method オブジェクトの違い (proc, lambda, ブロック, メソッドについて) - vivid memo
    rochefort
    rochefort 2012/01/28
    -> レシーバのない手続きは Proc オブジェクト (特に lambda) を使い、既に定義されているメソッドをオブジェクト化する際には Method オブジェクト (またはそれを Proc 化したもの) を使う、という風に使い分ければいいのではな
  • Rubyist なら当然知ってる!? Proc.new と lambda の違い - (゚∀゚)o彡 sasata299's blog

    2010年09月22日10:17 Ruby Rubyist なら当然知ってる!? Proc.new と lambda の違い Proc.new とか lambda ってわかりにくいですよね。ブロックと何か似てるけどどう違うの…!! っていう感じで困ります。さて、最近「メタプログラミングRuby」を読んだらその辺の話がわかりやすく書かれていたので勉強がてらブログりますよー (`・ω・´) メタプログラミングRuby 著者:Paolo Perrotta アスキー・メディアワークス(2010-08-28) 販売元:Amazon.co.jp クチコミを見る まずは前提から。この辺の話もあんまり頭に入ってなかったです。聞いた事はあるけど久しぶりに聞きましたー、みたいな。 ・Ruby ではほぼすべてがオブジェクト(うんうん。らしいねらしいね) ・だたしブロックはオブジェクトではない(ほほぉ〜) ・ブロ

    rochefort
    rochefort 2011/04/25
    Proc.new / lambda
  • Rubyのblock、Proc、lambdaを理解する - このブログは証明できない。

    新年おめでとうございます。2009年の最初のネタはプログラミングのネタにすることにしました。 Rubyについてのステキなエントリーがあったので、紹介します。 no title 私は翻訳能力がないばかりか、リーディング能力も貧相です。ぜひ、原文を読んでみてください。 はじめに Rubyblock、Proc、lambdaはパワフルですが、解りにくい。Rubyはクロージャを使う方法が4つあって、それぞれチョットずつ違います。ここでは、そのへんを解説したいと思います。 Block もっとも簡単で、かつRubyっぽいと言えば、Blockですね。 array = [1, 2, 3, 4] array.collect! do |n| n ** 2 end puts array.inspect # => [1, 4, 9, 16] 何が起こっているか? まず、block付きでArrayの"collect

  • Rubyで "&" を使うと幸せになれるらしいよ (*´Д`)ノ - (゚∀゚)o彡 sasata299's blog

    2010年02月03日21:31 Ruby Rubyで "&" を使うと幸せになれるらしいよ (*´Д`)ノ なんか似たようなタイトルを見たことあるな…まぁいいか。 Perlで+を使うと幸せになれるよ (*´Д`)ノ - (゚∀゚)o彡 sasata299's blog ブロック処理 ( do...end もしくは {...} ) の例としてはこのような3種類があります。 #1 ブロックの中に直接処理を書く方法 #2 ブロックの中でやらせたい処理の Proc オブジェクトを呼び出す方法 #3 ブロックを使わずに Proc オブジェクトに & を付けて渡してあげる方法 3つとも全く同じ処理です。#3 みたいに書く事も出来るんですね〜。& が Proc オブジェクトをブロックに変換してくれます。 #1 3.times do puts 'hogehoge' end proc = Proc.new

  • 1