我有一个方法接受将被调用的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? –
是错字,修正。 –
只要确保。很高兴看到你有两个很好的答案。 –