阵列半扁平化

时间:2011-07-19 18:31:28

标签: ruby arrays arguments apply

想转换此内容:

[["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 个答案:

答案 0 :(得分:5)

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 :(得分:1)

我认为对你有用的是使用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

基本上将星号(*)放在变量前面会将数组中的所有元素扩展为参数列表,这就是你想要的。

答案 2 :(得分:0)

除了最后一行代码之外,其余部分似乎通过使用0索引来解决:

arr[0]