我对哈希的大小函数有一些严重错误。这是行动的。
这是我的哈希:
"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,与预期的一样。
有什么想法吗?
答案 0 :(得分:3)
如果你有(key,question)
个参数,那么当迭代遍历哈希时,它们会被并行赋值。因此,例如,第一次迭代key
为“6”,question
为“8”。第二次迭代key
为“7”,question
为“12”。
你在问question.size
。但由于question
只是一个字符串,question.size
返回字符串的长度。第一次迭代,问题ID“8”是 1 字符长。第二次迭代,问题ID“12”是 2 个字符长。这就是你获得的数字来自的地方。