, ben genellikle işe görünmüyor Ancak yöntemde dinamik aşağıdaki gibi tanımlananNeden "block_given?" Bu dinamik olarak tanımlanan yöntemle çalışmıyor? Ben isteğe bağlı blok almak yöntemleri yazdığınızda
block.call if block_given?
, block_given?
gibi bir şey kullanın.
class Foo
%w[bar baz].each do |method_name|
define_singleton_method(method_name) do |&block|
puts "Was #{method_name} given a block? #{block_given?}"
puts block.call
end
end
end
Foo.bar { puts 'I am a block' }
Blok beklendiği gibi çağrıldı, ancak block_given?
yanlış döndürdü.
Bu neden?