参数假设我有一个方法访问哈希键作为EVAL
def test_eval(formula, num)
eval(formula)
end
那么我可以说
p test_eval("2 + num", 3)
并在EVAL过程中它会看到num
被定义为3在这种情况下,将打印出5.
假设我想在我的公式中允许任意变量名称。例如,我要评估公式
test_eval("2 + num1 + num2", 3, 5)
我可以修改方法签名接受两个参数叫做num1
和num2
,但有给我,而不必硬编码签名,简单地接受的方式变量名称的散列?
例如
test_eval("2 + num1 + num2", {:num1 => 3, :num2 => 5})
而且我的方法将评估公式和返回10.如何定义,让我拨打这个电话,并返回相应的结果的方法?
为什么你需要做到这一点呢?我怀疑你已经决定''eval'是解决方案,现在你正试图让它工作,当你可能会更好地备份和重新开始。 – 2014-12-04 21:07:22
@ muistooshort'eval'绝对是最容易想到的解决方案,因为我很有兴趣允许其他人在公式的上下文中传递自己的公式以及他们自己的变量。公式可以是任意的ruby代码,而不是像数学公式分析器那样的特定的东西。 – MxyL 2014-12-04 21:10:51