Стамен обнови решението на 19.10.2016 12:55 (преди около 8 години)
def fetch_deep_with_index(source, path_in_arr, index)
if find_type_of_key(source, path_in_arr[index]) == nil
return nil
else
key = find_type_of_key(source, path_in_arr[index])
end
return source[key] if index == path_in_arr.size - 1
index += 1
fetch_deep_with_index(source[key], path_in_arr, index)
end
Само не знам дали това отговаря на 8 реда за метод?(надявам се,че става въпрос за тялото на функцията)
Също така къде мога да променя решението си, за да има използване и на map
Щом сайтът ти го е приел, значи отговаря на ограничението. Още, може да имаш празни редове - тях не ги брои.
Иначе, в условието пише "Добавете метод reshape на всички хешове, който преобразува текущия хеш в нов с различна структура."
https://postimg.org/image/ewn6zp0qf/
Тук ми е интересно защо така се получава , уж са различни обекти и променям само form_work чрез извиканата функция .last_el() , а след това и съдържанието на form също се е променило?
Правиш плитко копиране. Тоест копираш само самия хеш, но не и стойностите в него. Тези стойности после ги променяш.
Тръгнал си с кофти подход. Не променяй на място. Просто гледай от единия хеш и пълни в другия. :)
Освен това, разгледай какви методи ти дава класа Hash. Например, map
би бил много полезен за reshape
. Преди да почнеш да пишеш сам всичко, разгледай дали няма нещо готово, което може да те улесни :)
А възможно ли е да се направи изцяло ново копие на shape хешът , т.е. да го преодолеем това плитко копиране?