2016-09-20 18 views
0

私はルビーが新しく、事前に謝罪しています。しかし..ハッシュから動的に作成されたオブジェクトを保存する方法は?

私はハッシュの配列に基づいてオブジェクトを動的に作成しようとしています。しかし、どのようにオブジェクトを格納するのですか?

私は1つだけ作成していた場合、私はそうのような変数の代入行いたい:ここについて

h = PuppetNode.new(hash) 
print h.hostname # foo.bar.com 

が、何を?:

array_of_hashes.each { | hash | 
    h = PuppetNode.new(hash) 
} 

これは「H」のオブジェクトになります上書きされますか? 私は、変数に動的に名前を付けるためにハッシュから何かを抽出しようとすることができますが、さまざまなインスタンス変数が各オブジェクトの一意性をマークするので不要なようです。

本当に変数を使用する必要がありますか?そうでない場合は、どのようにオブジェクトを作成/保存しますか?もしそうなら、どうやって痛みを伴う正規表現を使わずに変数名を動的に設定できますか?

ありがとうございます

+0

出力を正確にしたいのですが、私は不明です。 – Anthony

+0

(私のコード例ではエラーが修正されました) 'array_of_hashes'は3つのハッシュです。どのようにして3つのオブジェクトを取得できますか?最初の例と同じように、h.hostnameで参照できます。 – spoovy

+1

'nodes = array_of_hashes.map {ハッシュ| PuppetNode.new(hash)} 'は、PuppetNode'オブジェクトの配列を生成します。 'pノード[0] .hostname' – Anthony

答えて

1

複数のオブジェクトを保存する場合は、コレクションオブジェクトを使用してその操作を行うことができます。 Rubyには、Array(数値インデックスでアドレス可能な要素の線形シーケンス)とHash(キーオブジェクトから値オブジェクトへのマッピング、キーでアドレス可能)の2種類のコレクションオブジェクトがコアライブラリに組み込まれています。標準ライブラリには、Set (a collection that tracks membership of values) and SortedSetなどのコレクションオブジェクトの追加の種類があります。

関連する問題