タグ

procに関するnabetamaのブックマーク (2)

  • 橋本商会 » RubyのlambdaやProcとblock渡しとコールバック関数

    先日のRuby初級入門2013で事前に「Rubylambdaとかblockとか教えて」と言われていたけど、どうみても初心者向けの内容ではないので無視していたので解説する lambda{ コード }とProc.new{ コード }の差がよくわからない ここ読め RubylambdaとProcの違いは? – QA@IT rubylambdaとprocの比較実験 – Qiita [キータ] まとめると 内部でreturnした時と、引数の数が違うときの挙動が違うそうです block渡しを使ったイベント登録について do 〜 endブロックで渡された処理はすぐにyieldで返さなくてもいい block渡しを受け取れる関数を宣言する方法 例えば、フィボナッチ数列を次々と生成する場合を考える。 フィボナッチ数列は無限に続くので、計算が終わらない。 無限に終わらない処理は結果をreturnで返せない

  • class Proc (Ruby 1.9.3)

    クラスの継承リスト: Proc < Object < Kernel < BasicObject 要約 ブロックをコンテキスト(ローカル変数のスコープやスタックフ レーム)とともにオブジェクト化した手続きオブジェクトです。 Proc は ローカル変数のスコープを導入しないことを除いて 名前のない関数のように使えます。ダイナミックローカル変数は Proc ローカルの変数として使えます。 Proc がローカル変数のスコープを保持していることは以下の例で 変数 var を参照できていることからわかります。 var = 1 $foo = Proc.new { var } var = 2 def foo $foo.call end p foo # => 2 手続きを中断して値を返す 手続きオブジェクトを中断して、呼出し元(呼び出しブロックでは yield、それ以外では Proc#call) へジャンプ

  • 1