ruby中的计算方法

ruby中的计算方法,ruby,Ruby,我需要编写一个包含三个参数的计算方法:一个整数、一个运算符字符串(例如:“+”)和另一个整数。该方法应执行该操作并返回结果,即整数。该方法应该能够处理+、-、*和/操作。例如,计算(4,“+”,5)应该返回9 我认为方法应该是这样的: def calculator(a,'b',c) a.to_i b.to_s c.to_i end p calculator(4,'+',5) 我一直收到错误消息。请告知如何呼叫其他操作员来完成此操作。可能类似于: def calculator(a,

我需要编写一个包含三个参数的计算方法:一个整数、一个运算符字符串(例如:“+”)和另一个整数。该方法应执行该操作并返回结果,即整数。该方法应该能够处理+、-、*和/操作。例如,计算(4,“+”,5)应该返回9

我认为方法应该是这样的:

def calculator(a,'b',c)
     a.to_i b.to_s c.to_i
end


p calculator(4,'+',5)

我一直收到错误消息。请告知如何呼叫其他操作员来完成此操作。

可能类似于:

def calculator(a, operation, b)
  a.send(operation, b)
end

calculator(1, '+', 3)
#=> 4
calculator(3, '*', 2)
#=> 6

也许是这样的:

def calculator(a, operation, b)
  a.send(operation, b)
end

calculator(1, '+', 3)
#=> 4
calculator(3, '*', 2)
#=> 6

您应该了解什么是方法签名,什么是语句。
如果您不想费心理解,可以使用rubysend方法

编辑:

您应该了解什么是方法签名,什么是语句。
如果您不想费心理解,可以使用rubysend方法

编辑:

这个
a.to_i b.to_s c.to_i
假设是什么意思?如果参数是
a
op
b
,所有字符串,你都可以写
eval a+b+c
(例如
eval“2”+“*”+“3”=>6
),但如果你写了,警察会追上你的(因为
eval
,如果随意使用,可能会被坏人利用)。这
a.to_i b.to_s c.to_i
是什么意思?如果参数是
a
op
b
,所有字符串,你都可以写
eval a+b+c
(例如,
eval“2”+“*”+“3”\6
),但如果你这样做,
eval
警察会追捕你(因为
eval
,如果随意使用,可能会被坏人利用)。还有使用符号(
:+
:*
)的额外好处。还有使用符号(
:+
:*
)的额外好处。