【发布时间】:2016-05-25 08:44:21
【问题描述】:
我正在学习 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) 部分,它说“无法使用这样的签名解析引用扁平化”,并且在 flatten 的 List 类文档中它说“注意:编译器可能不是能够推断类型参数”。
任何想法为什么第二个代码不起作用?
【问题讨论】: