创建一个填充了单独哈希的数组

时间:2014-11-14 10:23:57

标签: ruby arrays hash

我试图创建一个数组,其中每个条目应该是一个单独的,相同的哈希条目。

iTabSize = 500 #protein max lenght
arrTable = Array.new(iTabSize) 
hshTable = {"-"=>0,"B"=>0,"Z"=>0,"I"=>0,"M"=>0,"T"=>0,"N"=>0,"K"=>0,"S"=>0,"R"=>0,"V"=>0,"A"=>0,"D"=>0,"E"=>0,"G"=>0,"F"=>0,"L"=>0,"Y"=>0,"X"=>0,"C"=>0,"W"=>0,"P"=>0,"H"=>0,"Q"=>0}
0.upto(iTabSize){|x| arrTable[x]= hshTable}

问题是如果我更改数组的一个条目中的哈希值,则哈希会针对所有其他条目进行更新:/

arrTable[x][strSeq[x]] = arrTable[x][strSeq[x]] + 1

strSeq是包含来自散列的字母的序列。 结果是arrTable的每个x包含完全相同的值?

在使用哈希创建数组时,我做错了什么?

我试过

arrTable = Array.new {Hash.new}
arrTable[x] = Array.new

但它并没有改变一件事! TNX!

1 个答案:

答案 0 :(得分:4)

我认为这应该适合你:

max_protein = 500
hash_table  = {"-"=>0,"B"=>0,"Z"=>0,"I"=>0,"M"=>0,"T"=>0,"N"=>0,"K"=>0,"S"=>0,"R"=>0,"V"=>0,"A"=>0,"D"=>0,"E"=>0,"G"=>0,"F"=>0,"L"=>0,"Y"=>0,"X"=>0,"C"=>0,"W"=>0,"P"=>0,"H"=>0,"Q"=>0}

array_table = Array.new(max_protein) { hash_table.clone }