【发布时间】:2018-04-15 11:07:06
【问题描述】:
我已经跳入 Scala 并开始做 scala99,但我被困在 P07(列表展平)以下是我的代码和来自 repl 的错误消息
scala> def flatten[A](x: List[A]): List[A] =
| for(i <- x) yield i match {
| case lst: List[Any] => flatten(lst)
| case e => List(e)
| }
<console>:12: error: type mismatch;
found : List[List[Any]]
required: List[A]
for(i <- x) yield i match {
^
我哪里错了,正确的方法是什么? 谢谢。
【问题讨论】:
-
我首先看到的是你的参数类型是
List[A]而不是List[List[A]],因为前者没有什么可以“扁平化”的。另外,为什么要匹配List[Any]? -
@YuvalItzchakov 我不明白:为什么期待
List[Any]在那个地方?当x为List[A]时,for(i <- x)完全有效 ...