arrays - 如何在scala中合并一系列数组

标签 arrays scala foldleft

我有一个 Seq[Array[Int]] 类型的值,我想以单个 Array[Int] 结束。我认为 foldLeft 会起作用,但令人惊讶的是它不起作用:

scala> val arr1 = Array(1,2,3)
arr1: Array[Int] = Array(1, 2, 3)

scala> val arr2 = Array(4,5,6)
arr2: Array[Int] = Array(4, 5, 6)

scala> val seq = Seq( arr1, arr1 )
seq: Seq[Array[Int]] = List(Array(1, 2, 3), Array(1, 2, 3))

scala> seq.foldLeft ( Array.empty )( (x,y) => x ++ y )
<console>:17: error: value ++ is not a member of Array[Nothing]
       seq.foldLeft ( Array.empty )( (x,y) => x ++ y )
                                                ^

不过这个错误似乎并不完全正确,因为我可以这样做:

scala> Array.empty
res22: Array[Nothing] = Array()

scala> Array.empty ++ arr1 ++ arr2
res23: Array[Int] = Array(1, 2, 3, 4, 5, 6)

什么给了?

最佳答案

seq.flatten.toArray 怎么样?

对于 foldLeft 解决方案,您应该告诉编译器类型:Array.empty[Int],当您错过了 [Int] 时,编译器选择 Nothing 作为 Array.empty 的唯一可能类型。

关于arrays - 如何在scala中合并一系列数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39168381/

相关文章:

php - 不在 CODEIGNITER Mysql 中插入数据库

Scala:合并 map

list - 如何使用 foldLeft 从列表中找到值的位置?

scala - 在 Scala 中决定使用 Foldleft() 还是 Seq.newBuilder

php - 在 Mustache (php) 中使用点符号是不好的做法吗?

java - 我的代码找不到我已经声明的数组

php - 如何检查另一个数组数组中是否存在相似数组

Scala Actor : receive vs react

list - scala:将 List[ Tuple3[A,B,C] ] 转换为 Foo(A, B, List[C]) 的最短方法

Scala: Value::不是 Int 的成员