Для приложения электронной коммерции я пытаюсь превратить хэш опций, каждый с массивом вариантов, в массив хешей, представляющих комбинации этих вариантов. Например:Ruby хэш-комбинации
# Input:
{ :color => [ "blue", "grey" ],
:size => [ "s", "m", "l" ] }
# Output:
[ { :color => "blue", :size => "s" },
{ :color => "blue", :size => "m" },
{ :color => "blue", :size => "m" },
{ :color => "grey", :size => "s" },
{ :color => "grey", :size => "m" },
{ :color => "grey", :size => "m" } ]
Input могут иметь дополнительные опции внутри него с неопределенным количеством вариантов для каждого из них, но это будет только когда-либо быть вложенными 1 уровень глубокой. Любой
Я думаю, вы имеете в виду 'shift' вместо' unshift' (который ничего не делает, если аргументы не заданы). И FWIW в Ruby 2+ вы можете заменить последнюю «карту» на «map (&: to_h)», ergo: 'ary.shift.product (* ary) .map (&: to_h)'. –
похоже на это решение с работами 'shift' – dvanderb
@ Иордан - конечно, я имел ввиду сдвиг, уже поздно. : P Спасибо, что указали это. – BroiSatse