Ошибки с размером по хеш-значению - PullRequest
1 голос
/ 24 августа 2011

У меня есть критическая ошибка с функцией размера хэша Это действует ирационально.

Вот мой хэш:

"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 Ответ

3 голосов
/ 24 августа 2011

Когда у вас есть (key,question) параметры, как у вас, они заполняются в параллельном присваивании, поскольку он выполняет итерацию по хешу. Так, например, первая итерация key равна "6", а question равна "8". Вторая итерация, key - это "7", а question - это "12".

И вы спрашиваете question.size. Но поскольку question является просто строкой, question.size возвращает длину строки. На первой итерации идентификатор вопроса "8" имеет длину 1 символа. Вторая итерация, идентификатор вопроса «12» имеет длину 2 символов. Вот откуда приходят цифры, которые вы получаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...