这个例子有点做作,但它来自一个测试,所以它只是以这种方式工作,并将帮助我弄清楚如何在实际的库中使用它。我有一个 lambda,定义如下:
l = lambda { |v| process(v) }
我想将它传递给一个对象并让 proc 在该对象的上下文中运行。该对象可能如下所示:
class LambdaRunner
def process(v)
puts v
end
def run(proc)
# code to run proc in the context of the object
end
end
我熟悉使用 instance_eval 运行 proc 的解决方案。
instance_eval(&proc)
但这不起作用,因为我需要将值传递给proc。我已经管理了类似工作解决方案的东西,但感觉很hacky并且容易出错。
self.class.class_eval do
define_method(:runner, &proc)
end
runner('hi from lambda runner')
所有其他方法都已满足undefined method process