У меня есть значение типа Seq[Array[Int]]
, и я хочу в итоге поставить Array[Int]
. Я думал, что foldLeft будет работать, но на удивление он не делает:Как слить последовательность массивов в scala
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)
Что это дает?
Спасибо за объяснение. Я все еще знаком с выводами типа scala. Но вы правы, «seq.flatten.toArray» лучше. – doub1ejack