Guest User

Untitled

a guest
May 25th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. ---自作ソース-----
  2. def log(args)
  3. p args + " before"
  4. v = yield(args)
  5. p args + " after"
  6. v
  7. end
  8. ---ここまで------
  9.  
  10. def foo
  11. log("in foo"){ yield("FOO") }
  12. end
  13.  
  14. def bar
  15. log("in bar") do
  16. foo do |v|
  17. log("in block for foo"){ yield(v) }
  18. end
  19. end
  20. end
  21.  
  22. bar do |v|
  23. log("in block for bar"){ v * 3 }
  24. end
  25.  
  26.  
  27. 1.barメソッドの実行
  28. 2.log("in bar")の実行
  29. 3.in bar beforeの表示
  30. 4.yield(args)のコールバックで fooメソッドを実行
  31. 5.log("in foo")の実行
  32. 6.in foo beforeの表示
  33. 7.yield(args)のコールバックで log("in block for foo")の実行
  34. 8.in block for foo beforeの表示
  35. 9.yield(args)のコールバックで yield(v)の実行
  36. 10.yield(v)のコールバックで、log("in block for bar")の実行
  37. 11.in block for bar afterの表示
  38. 12.yield(args)のコールバックで v * 3の実行
  39. 13.vにFOOFOOFOOの値が入る
  40. 14.in block for foo afterの表示
  41. 15.in foo afterの表示
  42. 16.in bar afterの表示
  43. 17.戻り値FOOFOOFOOの表示
Add Comment
Please, Sign In to add comment