紙一枚の積み重ね : ruby / attr_accessorの使い方

Rubyを学習する上で「attr_accessorて何者なの。。。。」と思ったのでメモ

目的
attr_accessorの成り立ちを理解すること!

アジェンダ
1.Personクラスの準備(前準備)
2.メソッドを準備
3.reader/writerメソッドによるインスタンス変数の定義
4.attr_reader/attr_writerによるインスタンス変数の定義
5.attr_accessorによるインスタンス変数の定義
6.インスタンス変数をメソッドから呼び出す方法

#######################################################
1.Personクラスの準備(前準備)

class Person
end

person = Person.new
person.name # => no method error


#nameというメソッドは使われていないので現段階ではmethodエラーが表示される

#######################################################
2.メソッドを準備

class Person
 def name
   @name # simply returning an instance variable @name
 end
end

person = Person.new
person.name # => nil
person.name = "Dennis" # => no method error  

#ここで初めてgetter、setterメソッドのうちgetterメソッドが出てきます。(C#ではgetter、setterとの名称ですが、rubyではwritter,readerメソッドというのですね。。。)
#setterメソッド : インスタンスに値を格納
#getterメソッド : インスタンス変数の値を読み込み

#######################################################
3.reader/writerメソッドによるインスタンス変数の定義

class Person
 def name
   @name
 end

 def name=(str)
   @name = str
 end
end

person = Person.new
person.name = 'Dennis'     # : setterメソッド(writerメソッド)
person.name # => "Dennis"     # : getterメソッド(readerメソッド)

#######################################################
4.attr_reader/attr_writerによるインスタンス変数の定義

class Person
 attr_reader :name
 attr_writer :name
end

#とても簡単にgetter,setterメソッドを定義できる。素敵。。。。。

#######################################################
5.attr_accessorによるインスタンス変数の定義

class Person
 attr_accessor :name
end

person = Person.new
person.name = "Dennis"
person.name # => "Dennis"

#さらに簡単に。。。。。。。。最高。。。。。。。。。。。。

#######################################################
6.インスタンス変数をメソッドから呼び出す方法

class Person
 attr_accessor :name

 def greeting
   "Hello #{@name}"
 end
end

person = Person.new
person.name = "Dennis"
person.greeting # => "Hello Dennis"attr_accessorでインスタンス変数を設定したら他の関数からも呼べます。

#######################################################


end

#######################################################




この記事が気に入ったらサポートをしてみませんか?