【问题标题】:How do I convert a math operator character to perform its operation?如何转换数学运算符字符以执行其运算?
【发布时间】:2013-11-01 19:10:31
【问题描述】:

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

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

p calc('-')
p calc('+')

【问题讨论】:

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

标签: ruby


【解决方案1】:

这里使用Object#send:

def calc(op)
  a = 9
  b = 5
  a.send(op,b)
end

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

【讨论】:

    猜你喜欢
    • 2011-06-17
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    相关资源
    最近更新 更多