我正在编写一个程序,使用define_method
,但我不知道如何定义这样的方法:
def mymethod(variable) do
puts variable
puts yield
end
可以通过以下方式进行调用:
mymethod("hi") do
# this is yield
end
我正在编写一个程序,使用define_method
,但我不知道如何定义这样的方法:
def mymethod(variable) do
puts variable
puts yield
end
可以通过以下方式进行调用:
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
yield
将被解释为词法作用域。 - sawamy_method("foo") do; "bar"; end
这样被调用。 - thesecretmaster