【Rubyメモ】Struct
Structとは
Structは構造体を表現するクラスです。 構造体とは1つ以上のフィールドを持つクラスです。 これを用いることで複数のフィールドをもたせることが出来ます。
少し特殊なのはStruct.new
を行なうと、Sturctクラスの
サブクラスを返すことです。
通常はクラスに対して newを行なうとそのクラスのインスタンスが返るので 最初は不思議な気がしました。
コード
# subject、gpaのフィールドを定義 SchoolRecord = Struct.new(:subject,:gpa) # スーパークラスはStructクラス(=Struct.newはStructのサブクラス) p SchoolRecord.superclass #Struct record = SchoolRecord.new("english",3.2) #recordオブジェクトでフィールドへアクセス p record.subject #english p record.gpa #3.2 #ハッシュっぽい使い方 p record[:subject] #english p record.members #[:subject, :gpa]
hashとの比較
hashとどこが違うのという話がありますが、hashの場合は新たにシンボルを
定義することが出来ます。が、Structはnew
した際に定義したメンバーしか使えません。
SchoolRecord = Struct.new(:subject,:gpa) SchoolRecord[:test] = "test" #error SchoolRecord.test = "test" #error
参考文献
パーフェクトruby