独習Ruby 7章 クラスとメソッド その3

- 作者: 株式会社テクノロジックアート
- 出版社/メーカー: 翔泳社
- 発売日: 2009/06/18
- メディア: 大型本
- クリック: 10回
- この商品を含むブログ (18件) を見る
どんどん手が止まってきてる…。
練習問題2
以下の仕様を満たすBirth モジュールを作成してください。
- インクルード先のクラスにDateオブジェクトを返すbirthdayメソッド(誕生日を返す)を要求する
- Birthモジュールは現時点の年齢を返すageメソッドを追加
- Birthモジュールは現時点で成人(20歳以上)かどうかを判定する coming_of_age? メソッドを追加する。
class Person include Birth def initialize(birth) @birthday = birth || Date.today end def birthday @birthday end end p = Person.new(Date.new(1985,10,1)) puts p.age #=> 23 puts p.coming_of_age? #=> true
僕の回答(というか手詰まり部分)
module Birth def birthday end def age day1 = Time.now day1 - birthday end module_function :age def coming_of_age? if age < 20 p "false" else p "true" end module_fucntion :coming_of_age? end
なんか当たってるのかわからなくなって集中力切れた…。
- インクルード先のクラスにDateオブジェクトを返すbirthdayメソッド(誕生日を返す)を要求する
ここどんな風にやるんだろう…。
回答例
module Birth def age now = Date.today.strftime("%Y%m%d").to_i birth = self.birthday.strftime("%Y%m%d").to_i #そうか、selfでクラスで取得した誕生日を取ってくるのか。 (now - birth) / 10000 end def coming_of_age? self.age >= 20 #上で定義したageメソッドを使って、二十歳以上を判定するんだな。 end end
まだまだだなー…。回答のソースコード見れると、自分の無知さに悔しくなる…。
「なーんでこんなにわからないんだろう」とか思って息抜きに「プログラミング 学習方法」とかで調べたら
プログラミングの勉強を始めて1年間で思ったこととか勉強方法とか - Akinekoの日記
こんな記事が。
僕の場合、中途半端だから何かしらひとつに集中した方がいいのかなーと思い始めてきた…。
朝Ruby から朝PHP にしようかな…
(そしてPHPer(笑)とdisられようか…)
ちょっと迷いが出た今日の朝。