2

タイプの値があり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)

何を与える?

4

1 に答える 1

8

どうseq.flatten.toArrayですか?

foldLeft解決策として、 type を compiler: に伝える必要があります。それArray.empty[Int]を見逃した[Int]場合、コンパイラはNothingの唯一の可能な型として選択しましたArray.empty

于 2016-08-26T14:17:43.323 に答える