Резюме
Учитывая Hash, где некоторые значения являются массивы, как я могу получить массив хэшей для всех возможных комбинаций?Все комбинации для хэш массивов
Пример тест
options = { a:[1,2], b:[3,4], c:5 }
p options.self_product
#=> [{:a=>1, :b=>3, :c=>5},
#=> {:a=>1, :b=>4, :c=>5},
#=> {:a=>2, :b=>3, :c=>5},
#=> {:a=>2, :b=>4, :c=>5}]
Когда значение для конкретного ключа не является массив, он просто должен быть включен как есть в каждом результате хэша, так же, как если бы оно было обернуто в массив.
Мотивация
мне нужно генерировать тестовые данные приведены различные значения для различных вариантов. Хотя я могу использовать [1,2].product([3,4],[5])
, чтобы получить декартово произведение всех возможных значений, я бы предпочел использовать хеши, чтобы иметь возможность маркировать как мои входные данные, так и вывод, чтобы код был более понятным, чем просто использовать индексы массивов.
Можете ли вы объяснить, что это не дубликат связанного вопроса? Вы имеете в виду, когда значение не является массивом? – sawa
@sawa Нет, для связанного вопроса будет только два результата: '[{a: 1, b: 3}, {a: 2, b: 4}]'. Связанный вопрос касается парных значений, а не продуктов. – Phrogz