Мне нужно получить некоторую информацию, связанную с фильмами и шоу из документа json.Избегайте вложенных блоков выбора
unique_nos = js['navigation']['category'].select{|n| n['name']=="Home"}.first['category'].select{|s| s['name']=="#{type}"}.first['category'].select{|k| k['name']=='Movie Studios'}.first['category'].map{|l| l['categoryId']}
То же самое можно сказать и о телешоу.
unique_nos = js['navigation']['category'].select{|n| n['name']=="Home"}.first['category'].select{|s| s['name']=='TV'}.first['category'].select{|k| k['name']=='Networks'}.first['category'].map{|l| l['categoryId']}
Я хотел бы избежать дублирования кода, выполняющего те же задачи. Я бы предпочел передать этот блок в качестве параметра, чтобы он мог быть динамическим. Есть ли способ достичь этого с помощью метапрограммирования?
Можете ли вы опубликовать json fragement? –
Не могли бы вы просто создать метод 'unique_nos', который будет называться' unique_nos (js, "# {type}", "Movie Studios") 'в первом примере и' unique_nos (js, "TV", "Networks") 'во втором? (Я вижу из ответа @ Uri, что мы думаем по тем же линиям, а также что я забыл аргумент 'js'.) –
То, что у вас есть, это цепочки, а не вложенность. – sawa