我有一個方法接受將被調用的lambda或將被評估的字符串。 爲什麼下面的方法失敗:Ruby中奇怪的過程錯誤
def test(expr)
expr = expr.respond_to?(:call) ? expr : ->{ eval(expr) }
expr.call
end
test 'puts 1'
# => TypeError: can't convert Proc into String
但這一工作:
def test(expr)
foo = expr
expr = expr.respond_to?(:call) ? expr : ->{ eval(foo) }
expr.call
end
test 'puts 1'
# => 1
錯字?真的拼寫epr? –
是錯字,修正。 –
只要確保。很高興看到你有兩個很好的答案。 –