Ruby要点整理
Rubyを学ぶ中で、理解が曖昧で、何度も書籍に立ち戻り確認してしまう点について、知識の整理のために記事を作成します。
##アクセスメソッド
オブジェクトの外部から直接インスタンス変数を参照したり、インスタンス変数に代入したりすることができないため、オブジェクトの内部情報にアクセスするためのメソッドを定義する必要がある。
###例1
example1.rb
class Menu
def initialize(name)
@name = name
end
def name
@name
end
def name=(name)
@name = name
end
end
上の例1では、nameメソッドはインスタンス変数を参照するもので、name=メソッドは、インスタンス変数を変更するもの。
しかし、インスタンス変数をいくつも扱う場合、それぞれについてこれらのメソッドを定義する必要があり、手間やミスの可能性が増える。
そこで用意されているのがアクセスメソッド。
###例2
example2.rb
class Menu
attr_accessor :name
def initialize(name)
@name = name
end
end
例2のように、 「attr_accessor インスタンス変数名を示すシンボル」
とすることで、例1のnameメソッドとname=メソッドの定義を1行で書くことができる。
このように、「attr_accessor」を用いることで、Menuクラスのインスタンスに、nameという情報(=インスタンス変数)を持たせることができる。