Ruby评估没有eval?

Tom*_*mmy 4 ruby eval

如何在不使用eval的情况下评估数学字符串?

例:

mathstring = "3+3"
Run Code Online (Sandbox Code Playgroud)

无论如何,可以在不使用eval的情况下进行评估?

也许是正则表达式的东西..?

mde*_*tis 7

你必须要么是eval它,要么解析它; 因为你不想eval:

mathstring = '3+3'
i, op, j = mathstring.scan(/(\d+)([+\-*\/])(\d+)/)[0] #=> ["3", "+", "3"]
i.to_i.send op, j.to_i #=> 6
Run Code Online (Sandbox Code Playgroud)

如果你想实现更复杂的东西你可以使用RubyParser(正如@LBg在这里写的那样- 你也可以看看其他答案)