RubyMotionでブロック中のblock_given?の値が変わる
これではまった。
https://gist.github.com/ainame/5651453
yieldも同じようにダメっぽい。
def callback_caller callback_caller2 do yield end end def callback_caller2(&block) block.call end callback_caller do p 'origin' end
# CRuby 1.9.3 $ ruby sample.rb "origin" # ruby motion 2.5 $ /Library/RubyMotion/bin/ruby sample.rb 2013-07-25 22:59:58.924 ruby[89777:707] /Users/hokamura/Works/tmp/sample.rb:3:in `block': no block given (LocalJumpError) from /Users/hokamura/Works/tmp/sample.rb:8:in `callback_caller2' from /Users/hokamura/Works/tmp/sample.rb:2:in `callback_caller' from /Users/hokamura/Works/tmp/sample.rb:11:in `<main>' /Users/hokamura/Works/tmp/sample.rb:3:in `block': no block given (LocalJumpError) from /Users/hokamura/Works/tmp/sample.rb:8:in `callback_caller2' from /Users/hokamura/Works/tmp/sample.rb:2:in `callback_caller' from /Users/hokamura/Works/tmp/sample.rb:11:in `<main>'
ちなみにcallback_caller2の処理をyieldにするとRubyMotionでもいける。
def callback_caller callback_caller2 do yield end end def callback_caller2 yield end callback_caller do p 'origin' end
# ruby motion 2.5 $ /Library/RubyMotion/bin/ruby sample.rb "origin"
うーむ・・。