我正在学习 Scala 并解决了 99 个 Scala 问题。对于以下练习:
展平嵌套列表结构。例子:
scala> flatten(List(List(1, 1), 2, List(3, List(5, 8))))
res0: List[Any] = List(1, 1, 2, 3, 5, 8)
解决方案如下
def flatten(ls: List[Any]): List[Any] = ls flatMap {
case ms: List[_] => flatten(ms)
case elements => List(elements)
}
但我想知道为什么以下不起作用?
def flatten[A](ls: List[List[A]]): List[A] = ls flatMap {
case ms: List[_] => flatten(ms)
case elements => List(elements)
}
IntellJ IDEA 告诉我问题出在flatten(ms)
部件上,说“无法使用这样的签名解析引用变平”,并且在List
类文档中flatten
说“注意:编译器可能无法推断类型参数”。
任何想法为什么第二个代码不起作用?