我正在编写一个使用define_method
的程序,但我不明白如何定义这样的方法:
def mymethod(variable) do
puts variable
puts yield
end
可以通过以下方式调用:
mymethod("hi") do
# this is yield
end
答案 0 :(得分:3)
您无法使用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
答案 1 :(得分:-2)
define_method :my_method do |str, &block|
# Do something here
yield # or block.call
# Do something here
end