1.定義の簡略化

class Drink
  def name
    @name
  end
  def name=(text)
    @name = text
  end
end

drink = Drink.new
drink.name = "コーヒー"
puts drink.name

#=>コーヒー

上記のような定義を簡略して書くことができる

1.attr_reader

「同名のインスタンス変数を戻り値とするメソッドを定義する」

  def name
    @name
  end
#--------- この部分を下記のようにできる ---------------

attr_reader :name

2.attr_writer

「同名のインスタンス変数に代入するメソッドを定義する」

def name=(text)
    @name = text
end

#--------- この部分を下記のようにできる ---------------

attr_writer :name

3.attr_accessor

上記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

#=> コーヒー

とできる。

2.self

self

「その場所での”レシーバー”を返すもの」

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

クラス変数

「クラスで共有される変数。 @@変数 と書く」