參數假設我有一個方法訪問哈希鍵作爲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