在开始之前,我尝试摆弄 instance_eval 和单例方法,但无济于事。我将介绍我在这个问题上的“最佳”尝试。
我正在尝试执行以下操作:
value = rule(condition: lambda {@something > 100})
value.act(120)
上述调用不能更改。
可以改变的是规则的定义方式:
def rule(condition: nil)
t = Object.new
t.class.module_eval{
attr_accessor :condition
def act(something)
if(condition.call(something))
return "SUCCESS"
end
end
}
t.condition = condition
return t
end
我不确定如何获取 lambda 代码块来获取某物的价值。任何帮助或指向正确方向将不胜感激!