「Rubyがミニツク」の演習問題を解く vol6
clever_printメソッドを定義する演習
問題
以下のコードがコメント部分の通りの出力となるように、
「clever_print」メソッドの定義を書いてください。
1. clever_print(["Ruby"], "the", ["Programming", "Language"]) 2. #=> Ruby the Programming Language 3. 4. clever_print(["Agile", "Web", "Development"], "with", { :Rails => 3.0 }) 5. #=> Agile Web Development with Rails 3.0
私の回答・解説
今回はメソッドの引数に配列とハッシュを
渡した時の制御が問題になっています。
前回の間違いを踏まえ「<<メソッド」を使いました。
引数で受け取ったクラスを確認するには
.instance_of?()メソッドを使うみたいです。
模範解答はこちら
1. def clever_print(*args) 2. converted = [] 3. args.each { |arg| converted << arg.to_a } 4. puts converted.join(" ") 5. end
短っ!
この模範回答ですが古いRuby(1.7?)でしか動かないそうです。
なので、現在のバージョン(2.1)では動かないです。
とりあえず自分のコードで良しとします。。。
次回は「PostcardクラスにインクルードするMailモジュールを定義する演習」をやります。