scala> test
res3: Array[java.io.Serializable] = Array(Array((AA,BB), (CC,DD)), (EE,FF))
,我想將其轉換爲
Array[(Any, Any)] = Array((AA,BB), (CC,DD), (EE,FF))
我可以用flatMap功能這樣
scala> val test2 = test.flatMap{
| case (a,b) => Array((a,b))
| case i:Array[Any] => i.flatMap{
| case (a,b)=> Array((a,b))}
| }
test2: Array[(Any, Any)] = Array((AA,BB), (CC,DD), (EE,FF))
轉換,但我想使功能適用於所有深度數組。 所以我試過
scala> def flatArray(array: Array[Any]): Array[(Any,Any)] ={
| array.flatMap{
| case (a,b) => Array((a,b))
| case i:Array[Any] => flatArray(i)
| }
| }
scala> val test2 = flatArray(test)
<console>:9: error: type mismatch;
found : Array[java.io.Serializable]
required: Array[Any]
Note: java.io.Serializable <: Any, but class Array is invariant in type T.
You may wish to investigate a wildcard type such as `_ <: Any`. (SLS 3.2.10)
val test2 = flatArray(test)
^
問題是什麼?
所以'測試包含一個二元陣列(含元組)IA陣列,然後一個元組; SA非常奇怪的數據結構,是不是真的正確 –