在Scala(或Java)中传递2D数组的列
如果我们有一个类似scala的数组 val myArray=myObject(N)(M) 将该数组的一行传递给函数非常容易,如下所示: myFunction(myArray(i))在Scala(或Java)中传递2D数组的列,java,arrays,scala,Java,Arrays,Scala,如果我们有一个类似scala的数组 val myArray=myObject(N)(M) 将该数组的一行传递给函数非常容易,如下所示: myFunction(myArray(i)) 是否可以传递一列而不是一行?或者我必须将该行的所有元素复制到新的1d数组中并传递该数组吗?如果您仅限于使用数组,则必须复制所有元素。如果使用数组的包装版本,当然可以使用不同的包装方式,包括使用沿列向下移动的内容。您可以使用映射(创建临时副本),如下所示: 也适用于任何给定的二维阵列,例如 val a = Array.
是否可以传递一列而不是一行?或者我必须将该行的所有元素复制到新的1d数组中并传递该数组吗?如果您仅限于使用数组,则必须复制所有元素。如果使用数组的包装版本,当然可以使用不同的包装方式,包括使用沿列向下移动的内容。您可以使用
映射(创建临时副本),如下所示:
也适用于任何给定的二维阵列,例如
val a = Array.tabulate(2,3){_+2*_}
Array(Array(0, 2, 4), Array(1, 3, 5))
应用换位,然后以与行相同的方式获取列
val t = a.transpose
Array(Array(0, 1), Array(2, 3), Array(4, 5))
及
它给出了第二列。我有一个元组集合框架,允许您提取列,并且具有类型安全优势:
val t = a.transpose
Array(Array(0, 1), Array(2, 3), Array(4, 5))
t(1)
Array(2, 3)