Недавняя хорошая статья о деструктуризации рубина определяет деструктурирование как способность связывать набор переменных с соответствующим набором значений в любом месте, где вы обычно можете связать значение с одной переменной, и дает пример деструктуризация блока
triples = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
triples.each { |(first, second, third)| puts second } =>#[2, 5, 8]
В этом случае у нас есть представление о количестве элементов в основном массиве, и поэтому, когда мы предоставляем аргументы первый, второй, третий, мы можем получить соответствующий результат. Так что, если бы у нас был массив массивов, размер которых определяется во время выполнения?
triples = [[1, 2, 3], [4, 5, 6], [7, 8, 9],...,[]]
а мы бы хотели получить элементы первой записи для каждого подмассива?
triples.each { |(first, second, third,...,n)| puts first }
Каков наилучший способ создания локальных переменных (first, second, third,...,n)
динамически?