Pascal レコードに似た Ruby のデータ構造はありますか?
約 15 ~ 20 個のフィールドを持つレコード タイプを定義したいと思います。それらはすべて文字列です。
この目的のためにクラスを定義しようとしましたが、getter メソッドと setter メソッドを定義する必要があることに気付きました。
class Data
def description
@description
end
def size
@size
end
def address
@address
end
.
. all other (about 15 variables...)
.
def description=( value )
@description = value
end
def size=(value)
@size=value
end
def address=(value)
@address=value
end
.
. more setter method (about 15 times...)
.
end
このように 15 ~ 20 個のフィールドと getter/setter をすべて定義するのは非常に面倒です。それを行うより短い方法はありますか?例えば:
class Data
desc, size, address=""
end
または似たようなもので、Data クラスの新しいインスタンスを作成できます。
d=Data.new
次に、インスタンス変数を設定します。
d.desc="bla"
d.size="50.66"
d.address="Bla street 20."
XMLSimple gem を使用して XML ファイルを解析できるメソッドが既にあり、解析されたデータからレコード (またはクラス) を作成し、「return」キーワードでそれを返したいと考えています。次に、レコードのフィールドに簡単にアクセスしたいと思います: d.size、d.address、d.description など。例えば:
def data_import(fname="1.xml")
data = XmlSimple.xml_in(fname,{'SuppressEmpty' => ""})
d=Data.new()
d.desc=data['desc'][0]
d.size=data['size'][0]
d.address=data['address'][0]
d. ... =
d. ... = (about 15-20 times)
d. ... =
return d
end
私のXML(1.xml):
<entity>
<desc>bla</desc>
<size>50.66</size>
<address>Bla street 20.</address>
.
. (15-20 more fields)
.
</entity>
Pascal 言語 (および私の知る限り C++) には、この目的のために「レコード」と呼ばれるデータ構造がありました。