superclass=Object
type=class
library=ostruct
extended=
included=

ǤưŪɲáǤڤʹ¤Τ󶡤륯饹Ǥ

OpenStruct Υ󥹥󥹤Ф̤ʥ᥽å x= Ƥ֤ȡ
OpenStruct 饹 [[m:Object#method_missing]] ª졢Υ󥹥󥹤
󥹥󥹥᥽å x, x= ޤ
εưˤäǤưŪѹǤ빽¤ΤȤƯޤ

  require 'ostruct'
  ab = OpenStruct.new
  ab.foo = 25
  p ab.foo          # => 25
  ab.bar = 2
  p ab.bar          # => 2
  p ab              # => <OpenStruct foo=25, bar=2>
  ab.delete_field("foo")
  p ab.foo          # => nil
  p ab              # => <OpenStruct bar=2>

˥ϥåѤ뤳ȤǤޤ

  son = OpenStruct.new({ :name => "Thomas", :age => 3 })
  p son.name        # => "Thomas"
  p son.age         # => 3
  son.age += 1
  p son.age         # => 4
  son.items = ["candy","toy"]
  p son.items       # => ["candy","toy"]
  p son             # => #<OpenStruct name="Thomas", age=4, items=["candy", "toy"]>

=== ե꡼Ƥ OpenStruct ˤĤ

Ruby ΥС󤴤Ȥ˵ưۤʤΤդƤ
ʲΥɤ¹ԤϡɽΤ褦ˤʤޤ

  require 'ostruct'
  a = OpenStruct.new
  a.x = :a
  a.freeze
  a.x = :b # ʬεưۤʤ

  1.8.0 ǽ
  1.8.1 TypeError
  1.8.2 ǽ
  1.8.3 ǽ
  1.8.4 ǽ
  1.8.5 ǽ
  1.8.6 ǽ
  1.8.7 ǽ
  1.8.8 TypeError
  1.9.1 ǽ
  1.9.2 TypeError

Ʊͤ˰ʲΥɤ¹ԤƤΥС㳰ȯޤ

  require 'ostruct'
  a = OpenStruct.new
  a.x = :a
  a.freeze
  a.y = :b # TypeError
