test.rb
def test1( &block)
# puts block
# block.call
yield
end
define_method(:test2) { | &block|
# puts block
# block.call
yield #if block_given?
}
test1 {
puts "test1"
}
test2 {
puts "test2"
}
用字面量定义正常调用 yield,同样的代码换成 define_method 就报错 而且不同版本报错不一样
ruby27 以上报错 Invalid yield (SyntaxError)
ruby27 以下报错 no block given (yield) (LocalJumpError) 但是 test2 明明传了 block 的