Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Structクラス > []

instance method Struct#[]

self[member] -> object[permalink][rdoc]

構造体のメンバの値を返します。

[PARAM] member:
Fixnum でメンバのインデックスを指定します。 Symbol, String でメンバの名前を指定します。
[EXCEPTION] IndexError:
member が整数で存在しないメンバを指定した場合に発生します。
[EXCEPTION] NameError:
member が String, Symbol で存在しないメンバを指定した場合に発生します。
Foo = Struct.new(:foo, :bar)
obj = Foo.new('FOO', 'BAR')
p obj[:foo]     # => "FOO"
p obj['bar']    # => "BAR"
# p obj[:baz]     # => in `[]': no member 'baz' in struct (NameError)
p obj[0]        # => "FOO"
p obj[1]        # => "BAR"
p obj[-1]       # => "BAR"    # Array のように負のインデックスも指定できます。
p obj[2]        # => in `[]': offset 2 too large for struct(size:2) (IndexError)

[注意] 本メソッドの記述は Struct の下位クラスのインスタンスに対して呼び 出す事を想定しています。Struct.new は Struct の下位クラスを作成する点に 注意してください。