「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モジュールを定義する演習」をやります。