我正在尝试制作一个基于控制台的计算器来练习一些Ruby,我使用'case'语句来检查控制台参数,然后使用Ruby的算法来解释并返回结果。
我遇到的问题是我无法让Ruby执行与乘法相关的行。它只是转到'else'块并执行我的帮助方法。我有除Exponent之外的所有其他方法我认为Ruby将STAR字符视为'Everything'(我不知道如何说出来)
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。
答案 0 :(得分:1)
您是否尝试通过编写'\ *'来转义星号?
答案 1 :(得分:0)
还有其他事情要发生。此irb会话确认case语句中的字符串按预期方式工作:
str = '*'
=> "*"
>> case str
>> when '*' then "foo"
>> end
=> "foo"
仔细检查@args[1]
实际上是否符合您的想法。