私は、呼び出されるラムダを受け入れるメソッドまたは評価される文字列を受け取ります。 はなぜ以下の方法が失敗しない:ルビーの奇妙なProcエラー
def test(expr)
expr = expr.respond_to?(:call) ? expr : ->{ eval(expr) }
expr.call
end
test 'puts 1'
# => TypeError: can't convert Proc into String
しかし、この1つの作業:
def test(expr)
foo = expr
expr = expr.respond_to?(:call) ? expr : ->{ eval(foo) }
expr.call
end
test 'puts 1'
# => 1
Typo?本当に綴られたepr? –
ええ、訂正しました。 –
あなたが2つの良い答えを持っているのを見てうれしい。 –