我试图创建一个数组,其中每个条目应该是一个单独的,相同的哈希条目。
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!
答案 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 }