Я пытаюсь сделать калькулятор на основе консоли, чтобы практиковать некоторый Ruby, я использую оператор case для проверки аргументов консолей, а затем использую арифметику Ruby для интерпретации и возврата результата.Проверьте, является ли строка равным '*'
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу заставить Ruby выполнить линию, связанную с умножением. Он просто переходит в блок «else» и выполняет мой метод помощи. У меня есть все другие методы, кроме экспоненте я полагаю, рубин лечит символы звезды, как «Все» (я не знаю, как слово, что)
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, так как недавно я начал изучать Rails.
Позвольте мне угадать: вы используете это из оболочки с чем-то вроде ruby yourscript.rb 2 * 2'? Тогда ваша оболочка, скорее всего, будет обрабатывать '*' как [glob] (http://en.wikipedia.org/wiki/Glob_ (программирование)) и расширять ее до того, как она даже достигнет вашего скрипта. – hammar
А я понимаю, что вы говорите «да», точно. »./clk 5 * 8« Я поеду некоторое исследование о том, как избежать этого в zsh. Спасибо молот. EDIT: Я убежал с \ * в моей оболочке. Рассмотрите этот вопрос RESOLVED –