在以下两种情况下,我在列表上调用了flatMap函数。在这两种情况下,flatMap函数的map部分都会返回一个具有迭代器的数组。在第一种情况下,代码会出错,而在第二种情况下,它将产生预期的结果。
场景1
val x = List("abc","cde")
x flatMap ( e => e.toArray)
<console>:13: error: polymorphic expression cannot be instantiated to expected type;
found : [B >: Char]Array[B]
required: scala.collection.GenTraversableOnce[?]
x flatMap ( e => e.toArray)
场景2
val x = List("abc,def")
x flatMap ( e => e.split(",") )
res1: List[String] = List(abc, def) //Result
您能帮忙为什么在第一种情况下表现不如预期吗?
如错误所述,您的类型是错误的。在检查API时,我们注意到您需要GenTraversableOnce
作为flatMap
的输入。 Array
是NOT一个GenTraversableOnce
,因此您无法为其应用flatMap
。