Minero Aoki wrote: > Hi all, Moin! > * Allows Proc#call to take a block. > > def m(&block) > block.call { p "OK" } > end > m {|&b| b.call } #=> "OK" Yay, finally we'll be able to use define_method() everywhere where we would use def instead. However all this raises some questions: 1) What will yield(*[]) do? 2) What will happen with these examples? define_method(:foo) { |arg| result = arg } foo(5); result # => 5 or ~> NameError? # Or more interesting: define_method(:foo) { foo = nil; return true } foo # => true or nil or NameError? foo # => true or nil? 3) What will happen with these examples? [1, 2, 3].each do |item| [1, 2, 3].each do |item| # Exception or reassignment of outer item or # own private inner item? end end [1, 2, 3].each do |item| [1, 2, 3].each do |inner_item| item += 1 if item == inner_item end p item end Regards, Florian Gross