なんてことはない、ただの整理です。
通常インスタンス変数を外部から参照する方法は、インスタンス変数を操作する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