Все возможные комбинации из хэша массивов в Ruby

Что у меня есть:

Допустим, у меня есть такой хеш с различными значениями, принадлежащими одному параметру.

a = {}
a[:bitrate] = ["100", "500", "1000"]
a[:fps] = ["15", "30"]
a[:qp] = ["20", "30"]
Что мне нужно:

Мне нужен какой-то способ итеративно получитьвсе возможные комбинации этих значений, поэтому со всеми парами параметр / значение:

bitrate = 100, fps = 15, qp = 20bitrate = 500, fps = 15, qp = 30...

Количество параметров (то есть ключей) и количество значений (то есть длина массивов значений) заранее неизвестны. В идеале я бы сделал что-то вроде:

a.foo do |ret|
  puts ret.keys   # => ["bitrate", "fps", "qp"]
  puts ret.values # => ["100", "15", "20"]
end

… Где блок вызывается для каждой возможной комбинации. Как я могу определитьfoo?

Что мне (наверное) не нужно:

Теперь я знаю это:Объединить массив массив во все возможные комбинации, только вперед, в Ruby, предлагая что-то вроде:

a.first.product(*a[1..-1]).map(&:join)

Но это работает со значениями и массивами только в массивах, и мне нужна оригинальная ссылка на имя параметра.

Ответы на вопрос(3)

Ваш ответ на вопрос