Я пишу программу, которая использует define_method
, но я не понимаю, как я мог определить метод, как этот:Как define_method с делать и в конечном
который может быть вызван:
mymethod("hi") do
# this is yield
end
Я пишу программу, которая использует define_method
, но я не понимаю, как я мог определить метод, как этот:Как define_method с делать и в конечном
который может быть вызван:
mymethod("hi") do
# this is yield
end
Вы не можете использовать yield
. Вы должны получить его как объект proc.
define_method(:mymethod) do |variable, &block|
puts variable
puts block.call
end
mymethod("foo"){"bar"}
# foo
# bar
mymethod("foo") do "bar" end
# foo
# bar
define_method :my_method do |str, &block|
# Do something here
yield # or block.call
# Do something here
end
Почему я не могу это сделать? – thesecretmaster
@thesecretmaster Поскольку 'yield' будет интерпретироваться с лексической областью. – sawa
Также этот метод нельзя назвать похожим на 'my_method (" foo "); "бар"; end' – thesecretmaster