« アイディアの放出 | メイン | Ruby会議にも実は参加していた »

第16回Ruby勉強会@関西に行ってきた

「Ruby 初心者向けレッスン第13回」の演習問題は以下の通り。
色々なメソッドを定義してみましょう

Part1
.引数を三つ受け取り、引数の内容に応じて計算結果を返すメソッド
  - 三つの引数のうち一つは演算子を表す文字列です
  - 残りの二つは数値です
  - eval系メソッドの使用は禁止です
  - 最低限、四則演算を実装して下さい。それ以上実装するのは自由です。

Part2
・先ほど作成したメソッドに以下の機能を追加して下さい
  - ゼロ除算した場合は例外メッセージを日本語で表示させる
  - 対応していない演算子が与えられた場合は例外を発生させる

Part3
・先ほどまでに作成したメソッドの引数で受け取ることができる数値の個数を無制限にしてください
  - ただし、演算子は一つでいいです。
  - 例えば+,1,2,3のような引数が渡された場合の結果は6です。
で、私の実装は以下の通り。
def part1(operator,arg1,arg2)
  case operator
  when "+"
    arg1+arg2
  when "-"
    arg1-arg2
  when "*"
    arg1*arg2
  when "/"
    arg1/arg2
  end
end

def part2(operator,arg1,arg2)
  begin
    case operator
    when "+"
      arg1+arg2
    when "-"
      arg1-arg2
    when "*"
      arg1*arg2
    when "/"
      arg1/arg2
    else
      "その演算子には対応していません。"
    end
  rescue ZeroDivisionError
    "0で除算されました。"
  end
end

def part3(operator,arg1,*args)
  begin
    rtn=arg1
    args.each{|arg|
      case operator
      when "+"
        rtn+=arg
      when "-"
        rtn-=arg
      when "*"
        rtn*=arg
      when "/"
        rtn/=arg
      else
        "その演算子には対応していません。"
      end
    }
    rtn
  rescue ZeroDivisionError
    "0で除算されました。"
  end
end
一応実装はできたが、Rubyっぽいかどうかは不明。

トラックバック

このエントリーのトラックバックURL:
http://www.kanasansoft.com/cgi/mt/mt-tb.cgi/44

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

Google