Rubyのblockの使い方
はじめに
Ruby基礎の勉強メモ。
JSからRubyに来てみて、Rubyでのブロックというのは、JSでのコールバック関数に相当するものだということは分かったけど、細かい所でよくわからない部分がいくつかあったので、調べた。
block
基本的なブロックの使い方のみ。
# ブロック付きメソッドの定義 # メソッド内でyieldを使ってブロックを実行 def call_block yield 'foo', 'bar' end # 呼び出し call_block do |a, b| puts a + ' ' + b end # ブロックを渡さず呼び出すとLocalJumpError # call_block() # 引数の数が違ってもエラーにならない call_block do |a| puts a end # 足りない引数はnil call_block do |a, b, c| p a, b, c end # Procオブジェクトをブロックとして渡す p = proc {|a, b| puts 'in proc: ', a, b } call_block &p # Kernel.#lambdaバージョン # Kernel.#procで作ったProcオブジェクトとはいくつかの場面で挙動が異なる l = lambda {|a, b| puts 'in lambda:', a, b } call_block &l
コールバックを複数渡したければ、Procオブジェクトを使う必要がある。
まとめ
とりあえず基本の使い方はわかった。
ProcやMethodと密接に関係してるっぽいので、そのうちその辺といっしょに調査しなおさないと。
やっぱり一冊ちゃんとした本読んだ方がいいかな。。