我有以下数组:
val input = Array(Array(), Array(22,33), Array(), Array(77), Array(88,99))
它包含空数组。我想获得一个没有任何空数组的扁平数组,因此输出应为:
Array(22,33,77,88,99)
我尝试了flatten
功能,但似乎无法使用Array[_ <: Int]
的类型。
答案 0 :(得分:4)
它推断Array[_ <: Int]
因为某些数组是空的。试试这个:
val input = Array(Array[Int](), Array(22,33), Array[Int](), Array(77), Array(88,99)).flatten
确保结果类型为Array[Array[Int]]
,这应该是可以展平的。
答案 1 :(得分:4)
Monads是你的朋友:
for { a <- input; b <- a.toList } yield b
编辑:
如果您指定了类型,flatten
可以正常工作
val input: Array[Array[Int]] = Array(Array(), Array(22,33), Array(), Array(77), Array(88,99))
input.flatten
答案 2 :(得分:3)
另一种写作方式:
input.flatMap(_.toList)
空数组转换为Nils,因为它是一个平面地图,Nils变平了