Не могу определить уровень стека слишком глубоко, ошибка - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь сделать вариант сглаживания, например, при наличии:

{a: {b:  1}}

Я должен получить это

#=> {"a.b":1}

и т. Д.

Вот мой код:

require 'active_support'
require 'active_support/core_ext'
def pathifize(hash,results = {}, current_key='', b = ".")
  hash.each do |new_key, value|
    combined_key = [current_key,new_key].delete_if { |k| k.blank? }.join(b)
    if value.is_a?(Hash)
      pathifize(hash,results, combined_key, b)
    else
      results[combined_key] = value
    end
  end
end

У меня слишком большой уровень стека при попытке тестирования на Irb.

1 Ответ

0 голосов
/ 26 апреля 2018

Ваш повторный вызов pathifize принимает в качестве аргумента исходный hash (и поэтому для вложенных хэшей он создает бесконечную рекурсию), в то время как он, вероятно, должен принимать value:

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