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にかなり慣れていないので、Rubyがこれらを正規表現ではなく単純な星として扱うために何をする必要があるかについて100%確信が持てません...

これは宿題ではないことを保証します。私は最近 Rails も学び始めたので、単に Ruby を学ぼうとしているだけです。

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 に答える