名前付き構造体
「Struct.new」の第一引数で、構造体の名前を指定できたりします。
- 名前を指定した場合、Structのクラス定数として生成された構造体が定義されます。
- 定義後は「Struct::<構造体名>」で作成した構造体にアクセスできます。
- 変数や定数に代入する必要はありません。(代入も可能ですが。)
- 構造体名は省略可能で、省略された場合、代入先の定数(変数)名がクラス名となります。(↑の例を参照)
# 名前付きで構造体を定義。 foo = Struct.new( "Kitten", :name ) # 構造体は、Struct::Kittenとして定義される。 puts Struct::Kitten.new( "mii" ).name puts foo.new( "tora" ).name # 代入も可能
実行結果です。
mii tora
いつも↓のような感じで使っていたのだけど、こういう定義の方法もあるのかー。
Kitten = Struct.new( :name ) puts Kitten.new( "mii" ).name
ふむ。