0

我正在尝试制作一个基于控制台的计算器来练习一些 Ruby,我正在使用“case”语句来检查控制台参数,然后使用 Ruby 的算术来解释并返回结果。

我遇到的问题是我无法让 Ruby 执行与乘法关联的行。它只是转到“else”块并执行我的帮助方法。除了指数之外,我还有所有其他方法我认为 Ruby 将 STAR 字符视为“一切”(我不知道该怎么说)

case @args[1]
when '+'
  puts "#{@args[0].to_i + @args[2].to_i}"
when '-'
  puts "#{@args[0].to_i - @args[2].to_i}"
when '*'
  puts "#{@args[0].to_i * @args[2].to_i}"
when '/'
  puts "#{@args[0].to_i / @args[2].to_i}"
when '%'
  puts "#{@args[0].to_i % @args[2].to_i}"
when '**'
  puts "#{@args[0].to_i**@args[2].to_i}"
else
  help
end

我知道它看起来很狡猾,我打算在一切正常后修复它。

我对 Ruby 还很陌生,所以我不能 100% 确定我需要做什么才能让 Ruby 将它们视为简单的星星而不是正则表达式......

我向你保证这不是家庭作业,我只是想学习一些 Ruby,因为我最近也开始学习 Rails。

4

2 回答 2

1

您是否尝试通过写“\*”来转义星号?

于 2013-04-15T05:02:07.520 回答
0

还有其他事情发生。此 irb 会话确认 case 语句中的字符串按您期望的方式工作:

str = '*'
=> "*"
>> case str
>> when '*' then "foo"
>> end
=> "foo"

仔细检查@args[1]实际上是您认为的那样。

于 2013-04-15T05:05:48.210 回答