2012-02-14 8 views
0

値を保存して参照するために、マトリックスタイプのデータ構造を使いたいと思っています。この2次元配列の を使用できます。しかし、私はより良い構造を探しています。ルビ、レールでのマトリックスルックアップのデータ構造

要件: 行列の列は固定されていますが、行は増加する可能性があります。

次の構造を参照してください。

Issue| col1, col2, col3, col4 
1 | 0, 1, 0, 0 
2 | 0, 1, 0, 1 
3 | 1, 1, 0, 0 

[構造体の値がフラグまたはステータスフィールドとして使用されている]

今私は、この構造は、ルックアップ

のために使用したいが、私は問題の2 COL1の値を知りたいと言います(上の例では0です)

上記のシナリオでは、ルビーの構造がより良いものは何ですか?

コメントしてください。

答えて

1

ハッシュはどうですか?

h = { 1 => [0,1,0,0], 
    2 => [0,1,0,1], 
    3 => [1,1,0,0] } 

#fetch value for issue 2 col 1 
puts h[2][0] 
+0

thnx for quick reply ..ハッシュは名前付きハッシュにできますか?例えばh [2] [col1]上記は、ハッシュ要素がインデックス値を介してアクセス可能なハッシュの配列です。しかし、これを名前付きハッシュとしてどのように使用できますか? –

+0

私は{1 => [{:col3 => 0、:col4 => 0、:col1 => 1、:col2 => 1}、2 => [{:col1 => 0}] }しかし、この場合、値にアクセスする方法..私はh [1] [:col1]の値を取得したいと言う?? –

+0

カラムは静的なので、カラム名のインデックスを提供する定数を定義できるので、好きなだけ使用することができます。 COLUMN_INDEX = {1 =>:col1,2 =>:col2}のようなものです。 h [1] [COLUMN_INDEX [:col1]]。それはかなり見えません。私がクラスに入れるより複雑なもの – roo

1

データセットが大きく、あなたがより速く検索し、より柔軟な設計を(あなたのデザインが進化として、後に列を追加しますとどうなるか?)にしたい場合は、あなたはインを検討するかもしれませんsupermodelのようなメモリデータベース。そうすれば、ホイールの再発明を避けることができます。また、ほとんど手間をかけずに多くの機能と柔軟性を得ることができます。