独習Ruby 7章 その2

独習Ruby

独習Ruby

苦戦。

7.2練習問題1

初期値の指定なんだけど、そのやり方がまったくわからなかった。単純に@kindとかに入れておけばいいんだと思っていたらエラーでまくりだし…。

回答例

#encoding : utf-8
class Dog
 def initialize(k = "Mongrel")
   @kind = k
  end
  def kind
   @kind
  end
  def kind=(k)
    @kind = k
  end
end

dog = Dog.new
puts dog.kind
dog.kind = "Chihuahua"
puts dog.kind

※これでもエラー出てるからなんか怪しい…。ただ、初期化はinitializeが担当するので、先にinitializeでMongrelを入れておく。

練習問題2
1に更に機能追加らしい。ご飯を食べてなかったら気分が悪くなって、ご飯を挙げていたら気分がごきげんになるっていう。

class Dog
   attr_reader :kind
   attr_writer :meal
 def initialize(k = "Mongrel")
     @kind = k
     @meal = nil
  end
  def feeling
     unless @meal
         return "Sad"
     else
        @meal = nil
        return "Good"
    end
  end   
end

kindは書き込まれないように読み込みのみの指定を行なっているところと、もし@mealがあった場合の処理の最初に@meal = nil にして中身をなくしてるんだな。

ぐぬぬ…もっと頑張らなければ…。
いつになればちゃんとコードが書ける人間になるんだろうか…