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