class Drink
def name
@name
end
def name=(text)
@name = text
end
end
drink = Drink.new
drink.name = "コーヒー"
puts drink.name
#=>コーヒー
上記のような定義を簡略して書くことができる
「同名のインスタンス変数を戻り値とするメソッドを定義する」
def name
@name
end
#--------- この部分を下記のようにできる ---------------
attr_reader :name
「同名のインスタンス変数に代入するメソッドを定義する」
def name=(text)
@name = text
end
#--------- この部分を下記のようにできる ---------------
attr_writer :name
上記2つを同時に行う
class Drink
attr_reader :name
attr_writer :name
end
#--------- この部分を下記のようにできる ---------------
attr_accessor :name
結果・・・
class Drink
attr_accessor :name
end
drink = Drink.new
drink.name = "コーヒー"
puts drink.name
#=> コーヒー
とできる。
「その場所での”レシーバー”を返すもの」
class Drink
def me#------------ インスタンスメソッド --------------------
p self.object_id
end
end
drink = Drink.new
p drink.object_id
drink.me
#=> 70218269771340
#=> 70218269771340 idはどちらとも同じである
class Drink
def self.me#--------------- クラスメソッド -------------
p self.object_id
end
end
p Drink.object_id
Drink.me
#=>70269964805620
#=>70269964805620
「クラスで共有される変数。 @@変数 と書く」