簡體   English   中英

如何在scala中合並一系列數組

[英]How to merge a sequence of arrays in scala

我有一個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的唯一可能類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM