2

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

1.9.3-p327 :002 > a=20;b=5;c="-"

然后我怎么能做“ab 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)

但我明白了

TypeError: can't convert Fixnum into String
    from (irb):6:in `eval'
4

1 回答 1

7

从技术上讲,做你想做的事情的方法是eval "#{a}#{c}#{b}"——这会将所有变量插入到一个字符串中。

但是,我不明白您为什么要使用eval它。由于-它是所有 Numeric 类的一种方法,所以a.send(c, b)如果你想这样做,你可以这样做a - b

于 2013-03-30T18:25:18.383 回答