「Rubyがミニツク」の演習問題を解く vol8
各Planetクラスのインスタンスにlifeメソッドを定義する演習
さっそくやっていきます。
問題
以下のコードがコメント部分の通りの出力となるように、
(A)の部分に当てはまる適切なコードを書いてください。
1. class Planet 2. def life? 3. puts "Who knows?" 4. end 5. end 6. 7. pluto = Planet.new() 8. earth = Planet.new() 9. mars = Planet.new() 10. 11. (A) 12. 13. pluto.life?() #=> Probably not. 14. earth.life?() #=> Positively! 15. mars.life?() #=> Who knows?
私の回答・解説
今回は、問題を見てもさっぱり分からなかったんですが、
ネットで調べたらすぐに分かりました。
特異メソッドという書き方で解くことができます。
newで生成したオブジェクトに対して
def …
と書くとそのオブジェクトに対してのみ有効な
メソッドを定義できるようです。
模範解答はこちら
1. def earth.life?() 2. puts "Positively!" 3. end 4. 5. def pluto.life?() 6. puts "Probably not." 7. end
今回は特に言うことないんですが、
特異メソッドはどういう時に使うんでしょうか。
- あるオブジェクトだけ別の振る舞いをさせたい
- その振る舞いを何度もさせる必要がある
とかでしょうか?
時間がある時に調べておきます。
次回は「buy_ticketsメソッドを定義する演習」をやります。