Rubyメモ
yieldと無名ブロック
最終更新:
Bot(ページ名リンク)
-
view
メソッドにブロックを渡してyieldで実行
Rubyの特徴のひとつがyield。これがあるから、eachとか、10.items do等が実現できる。
メソッドkurikaesiにパラメタのようなイメージでdo~endのブロックをを渡し、yieldを呼び出した次点でその部分を実行する。
Javaの無名クラスの強化版というか簡単版のようなものか。
メソッドkurikaesiにパラメタのようなイメージでdo~endのブロックをを渡し、yieldを呼び出した次点でその部分を実行する。
Javaの無名クラスの強化版というか簡単版のようなものか。
def kurikaesi yield yield end kurikaesi do puts 'Hello' end
同様の処理をCで記述すると以下のように関数ポインタを利用することになる。
void greeting(void) { puts ("Hello"); } void kurikaeshi(void (*pfunc)(void)) { pfunc(); pfunc(); } main() { kurikaeshi(greeting); }
~
~
~
yieldの後にパラメタを指定して、ブロック側で受け取るには
ブロック側でdoの直後に|変数|をつける。
ブロック側でdoの直後に|変数|をつける。
def kurikaesi2 yield 1 yield 2 end kurikaesi2 do |i| puts i end