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

独習Ruby

独習Ruby

どんどん手が止まってきてる…。

練習問題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られようか…)

ちょっと迷いが出た今日の朝。