Полуплющение массива - PullRequest
4 голосов
/ 19 июля 2011

Хотите конвертировать это:

[["1", "2", "3"], ["4", "5", "6"]]

к этому:

["1", "2", "3"], ["4", "5", "6"]

для передачи в Array.product (), и первый массив может содержать неизвестное количество других массивов. например, указанный массив также может быть

[["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"]]

И, в конечном итоге, мне нужно передать аргумент как:

otherArray.product(["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"])

Спасибо заранее!

Ответы [ 3 ]

5 голосов
/ 19 июля 2011
otherArray.product(*[["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"]]);

* используется в списке аргументов для распаковки содержимого массива в аргументы (например, здесь) или для упаковки аргументов в массив, как в "def mymethod (* args)"

Ссылка: http://www.justskins.com/forums/apply-method-to-array-17387.html

1 голос
/ 20 июля 2011

Я думаю, что для вас будет полезно использовать расширение Ruby Array:

a=[[1,2,3],[4,5,6]]
b=[1,2,3].product([1,2,3],[4,5,6])
c=[1,2,3].product(*a)
b == c #This should be true

По сути, если поставить звездочку (*) перед переменной, все элементы в массиве развернутся в список аргументов,чего ты хочешь.

0 голосов
/ 19 июля 2011

Последняя строка кода в стороне, остальная часть, похоже, решается с помощью индекса 0:

arr[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...