Skip to content

Instantly share code, notes, and snippets.

@itabatakafumi
Created May 17, 2010 10:10
Show Gist options
  • Save itabatakafumi/403611 to your computer and use it in GitHub Desktop.
Save itabatakafumi/403611 to your computer and use it in GitHub Desktop.
---自作ソース-----
def log(args)
p args + " before"
v = yield(args)
p args + " after"
v
end
---ここまで------
def foo
log("in foo"){ yield("FOO") }
end
def bar
log("in bar") do
foo do |v|
log("in block for foo"){ yield(v) }
end
end
end
bar do |v|
log("in block for bar"){ v * 3 }
end
1.barメソッドの実行
2.log("in bar")の実行
3.in bar beforeの表示
4.yield(args)のコールバックで fooメソッドを実行
5.log("in foo")の実行
6.in foo beforeの表示
7.yield(args)のコールバックで log("in block for foo")の実行
8.in block for foo beforeの表示
9.yield(args)のコールバックで yield(v)の実行
10.yield(v)のコールバックで、log("in block for bar")の実行
11.in block for bar afterの表示
12.yield(args)のコールバックで v * 3の実行
13.vにFOOFOOFOOの値が入る
14.in block for foo afterの表示
15.in foo afterの表示
16.in bar afterの表示
17.戻り値FOOFOOFOOの表示
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment