6

次の例に従って、ハッシュを配列に挿入しようとしています: Rubyで動的な多次元配列を作成する方法は? . 何が悪かったのか?

@array = Array.new
test1 = {"key1" => "value1"}
test2 = {"key2" => "value2"}
test3 = {"key3" => "value3"}            
@array.push(0)
@array[0] << test1
# ERROR: can't convert Hash into Integer    
@array[0] << test2    
@array.push(1)
@array[1] << test2
@array[1] << test3  
4

3 に答える 3

12

<<と同じように配列に追加するpushので、次のようにします。

@array << test1

または、特定の要素を上書きしたい場合は、次のように言います0

@array[0] = test1

それとも、実際に次のような 2 次元配列が必要@array[0][0]["key1"] == "value1"ですか? その場合、空の配列に追加する前に、適切な場所に空の配列を挿入する必要があります。

@array[0] = []
@array[0] << test1
@array[0] << test2    
@array[1] = []
@array[1] << test2
@array[1] << test3 
于 2012-10-05T22:04:33.497 に答える
3

Ruby 配列オブジェクトに挿入する方法はたくさんあります。ここにいくつかの方法があります。

1.9.3p194 :006 > array = []
 => [] 
1.9.3p194 :007 > array << "a"
 => ["a"] 
1.9.3p194 :008 > array[1] = "b"
 => "b" 
1.9.3p194 :009 > array.push("c")
 => ["a", "b", "c"] 
1.9.3p194 :010 > array_2 = ["d"]
 => ["d"] 
1.9.3p194 :011 > array = array + array_2
 => ["a", "b", "c", "d"] 
1.9.3p194 :012 > array_3 = ["e"]
 => ["e"] 
1.9.3p194 :013 > array.concat(array_3)
 => ["a", "b", "c", "d", "e"] 
1.9.3p194 :014 > array.insert("f")
 => ["a", "b", "c", "d", "e"] 
1.9.3p194 :015 > array.insert(-1,"f")
 => ["a", "b", "c", "d", "e", "f"] 
于 2012-10-05T22:09:54.083 に答える
1

@array[0] << test1このコンテキストでは、ハッシュによる0 << { "key1" => "value1" }ビットシフトの試みである を意味します。0Ruby はこれを実現するためにハッシュを整数に変換できないため、このエラー メッセージが表示されます。

于 2012-10-05T22:09:24.710 に答える