始めたばかりの時は理解できなかったので、素人の言葉で答えてみます。
Tweet
クラスに属性を持たせたいとしましょうstatus
。その属性を変更したいのですが、それはクラス内に隠されているためできません。クラス内の何かとやり取りできる唯一の方法は、そのためのメソッドを作成することです。
def status=(status)
@status = status # using @ makes @status a class instance variable, so you can interact with this attribute in other methods inside this class
end
すごい!今、私はこれを行うことができます:
tweet = Tweet.new
tweet.status = "200" # great this works
# now lets get the status back:
tweet.status # blows up!
status
それを行うメソッドを定義していないため、変数にアクセスできません。
def status
@status # returns whatever @status is, will return nil if not set
end
今tweet.status
もうまくいきます。
これには省略形があります。
attr_setter :status #like the first method
attr_reader :status # like the second one
attr_accessor :status # does both of the above