Ruby-如何计算两个数字和一个运算符?

Ruby-如何计算两个数字和一个运算符?,ruby,eval,Ruby,Eval,在Ruby中,如果我设置变量: 1.9.3-p327 :002 > a=20;b=5;c="-" 我怎样才能做到“a b c”并让它返回15 我试过这个 class Dummy < Object def self.calc(a,b,operation) return eval(a,operation,b) end end 1.9.3-p327 :006 > Dummy.calc(a,b,c) 从技术上讲,您想要的方法是eval“#{a}{c}{b}”——这

在Ruby中,如果我设置变量:

1.9.3-p327 :002 > a=20;b=5;c="-"
我怎样才能做到“a b c”并让它返回15

我试过这个

class Dummy < Object
  def self.calc(a,b,operation)
    return eval(a,operation,b)
  end
end

1.9.3-p327 :006 > Dummy.calc(a,b,c)

从技术上讲,您想要的方法是
eval“#{a}{c}{b}”
——这将所有变量插入到一个字符串中


但是,我不明白您为什么要为此使用
eval
。由于
-
是所有数值类的一种方法,如果你想做
a-b

的话,你可以只做
a.send(c,b)
事实上,使用eval来做这件事是一个非常糟糕的主意。如果它在网络上,则不发送(想想有人写了1,:instance\u eval,'system(\'rm-rf/\'))“?+1.是的,两者都起作用了。这是一个简化的代码片段,所以孤立起来没有多大意义,但我试图理解其原理,你的回答表明了这一点。还有其他理由使用发送超过评估-速度、内存、安全性等吗?@Linuxios:除了使用
发送
或类似的东西之外,你还有其他选择吗?在我看来,这是一个问题主要是关于清理数据。@Chuck:将字符串作为一种小型语言进行实际分析更安全。
TypeError: can't convert Fixnum into String
    from (irb):6:in `eval'