有两种我的代码,它起作用了:
直接使用flatten
val list = List(List(1, 2), List(3, 4))
println(list.flatten)
另一个使用方法
val list = List(List(1, 2), List(3, 4))
println(flatten(list))
def flatten(list: List[Any]): List[Any] = {
list.flatten//this is the line 28
}
出现了错误:
Error:(28, 14) No implicit view available from Any => scala.collection.GenTraversableOnce[B].
list.flatten
Error:(28, 14) not enough arguments for method flatten: (implicit asTraversable: Any => scala.collection.GenTraversableOnce[B])List[B].
Unspecified value parameter asTraversable.
list.flatten
为什么以及如何解决它?
答案 0 :(得分:1)
这是你想要的方法。
def flatten[A](list: List[List[A]]): List[A] = {
list.flatten
}
通用A
(或您想要提供的任何名称)与类型Any
不同。通用意味着“某些类型在List
”内保持一致,而Any
表示“我对List
”中的任何元素一无所知。
因此,List[Any]
无法展平,因为编译器对列表的内容一无所知。 List[List[Any]]
可以展平,但结果是List[Any]
,它不如List[A]
有用,因为编译器会附加A
的含义({{1} },Int
,Char
,....)这就是你会得到的回报(String
,List[Int]
,List[Char]
,.... )。