Rubyでアクセス用のメソッドを定義する(アクセッサ)

なんてことはない、ただの整理です。

通常インスタンス変数を外部から参照する方法は、インスタンス変数を操作するgetter/setterメソッドを作ります。

Rubyでは、このアクセス用のメソッド(アクセッサ)を簡単に作る機能があります。

以下のようなModuleクラスにあるものを使います

  • attr_reader : 参照(読み出し)できるようにする(getter)
  • attr_writer : 代入(書き込み)できるようにする(setter)
  • attr_accessor : 参照、代入の両方できるようにする(getter/setter)

それぞれ、使い方は以下のような形になります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Accessor

    attr_reader :name,:hoge
    attr_writer :fuga,:piyo
    attr_accessor :access
    
    def initialize
        @name = "kurobara"
        @hoge = "hogehoge"
        @fuga = "fugafuga"
        @piyo = "piypiyo"
        @access = "OK"
    end

    def print_fuga_piyo
        p '---------------------'
        puts "fuga = " + @fuga
        puts "piyo = " + @piyo
    end

end

a = Accessor.new()
puts a.name
puts a.hoge  
a.print_fuga_piyo
p "代入操作"
a.fuga = "fuga2fuga2"
a.piyo = "piyo2piyo2"
a.print_fuga_piyo
p '---------------------'
puts 'a.access = ' + a.access
p "代入操作"
a.access = "OKOK"
puts 'a.access = ' + a.access

こんな感じで使えちゃいます。。。
今更初心者みたいなことしてんなって突っ込まれそうだけど・・・
attr_accessorばっかり使うので、attr_reader,att_writerを忘れてましたw