Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何转换数学运算符字符以执行其操作?_Ruby - Fatal编程技术网

Ruby 如何转换数学运算符字符以执行其操作?

Ruby 如何转换数学运算符字符以执行其操作?,ruby,Ruby,我正试着做这样的事情。它给了我一个错误,我想这是因为op是一个字符串。是否可以将数学运算符的字符串转换为运算符 def calc(op) a = 9 b = 5 a op b end p calc('-') p calc('+') 这里使用的是: 感谢您更正代码的显示!我同意@Arup的回答,但想指出的是,你可以用eval“{a}{op}{b}”替换他的行a.send(op,b)。如果op='+',则变为eval“9+5”,即14。有些人建议总是避免使用eval,因为如果用户提供

我正试着做这样的事情。它给了我一个错误,我想这是因为
op
是一个字符串。是否可以将数学运算符的字符串转换为运算符

def calc(op)
  a = 9
  b = 5
  a op b
end

p calc('-')
p calc('+')
这里使用的是:


感谢您更正代码的显示!我同意@Arup的回答,但想指出的是,你可以用
eval“{a}{op}{b}”替换他的行
a.send(op,b)
。如果
op='+'
,则变为
eval“9+5”
,即
14
。有些人建议总是避免使用
eval
,因为如果用户提供了发送到
eval
的字符串,则可能会很危险,但在这里,我认为它的效果与
a.send(op,b)
几乎相同。同样,我会使用
send
。可能重复的
def calc(op)
  a = 9
  b = 5
  a.send(op,b)
end

p calc('-')
p calc('+')
# >> 4
# >> 14