散列值大小错误

时间:2011-08-24 10:27:00

标签: ruby hash

我对哈希的大小函数有一些严重错误。这是行动的。

这是我的哈希:

"questionnaires"=>{"1"=>{"6"=>"8", "7"=>"12", "5"=>"19"}}

@questions=evt["questionnaires"]["1"] # not really "1", that's an id but don't matter here

@questions.each do |(key,question)| # should be "6"=>"8", then "7"=>"12", ect ...
    temp = question.size

结果是1,2,2。所以这是烦恼,我正在测试大小的原因有时我会得到这样的数组:

所以,我不知道为什么

 "6"=>"8".size == 1, "7"=>"12".size == 2  and "5"=>"19".size == 2.

使用此数组

 "questionnaires"=>{"3"=>{"8"=>{"16"=>"16", "18"=>"18"}}}

结果是正确的。大小= 2,与预期的一样。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

如果你有(key,question)个参数,那么当迭代遍历哈希时,它们会被并行赋值。因此,例如,第一次迭代key为“6”,question为“8”。第二次迭代key为“7”,question为“12”。

你在问question.size。但由于question只是一个字符串,question.size返回字符串的长度。第一次迭代,问题ID“8”是 1 字符长。第二次迭代,问题ID“12”是 2 个字符长。这就是你获得的数字来自的地方。