タグ

Rubyとlambdaに関するsabroのブックマーク (2)

  • 手続きオブジェクトの挙動の詳細

    手続きオブジェクトとは 手続きを中断して値を返す orphan な手続きオブジェクトの挙動 Proc オブジェクトをブロック付きメソッド呼び出しに使う lambda と proc と Proc.new とイテレータの違い 手続きオブジェクトとは 手続きオブジェクトとはブロックをコンテキスト(ローカル変数のスコープやスタックフレーム)と ともにオブジェクトしたものです。Proc クラスのインスタンスとして実現されています。 ブロック内では、新たなスコープが導入されるとともに、外側のローカル変数を参照できます。 Proc オブジェクトがローカル変数のスコープを保持していることは以下の例で変数 var を 参照できていることからわかります。 例: var = 1 $foo = Proc.new { var } var = 2 def foo $foo.call end p foo # => 2

  • 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
  • 1