如何 define_method 完成并结束

How to define_method with a do and end

我正在编写一个利用 define_method 的程序,但我不明白如何定义这样一个方法:

def mymethod(variable) do
    puts variable
    puts yield
end

可以通过以下方式调用:

mymethod("hi") do
    # this is yield
end
define_method :my_method do |str, &block|
  # Do something here
  yield  # or block.call
  # Do something here
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