我试图使用下面的代码展开列表的列表。当我把它放在纸上时,它应该起作用,但我认为我误解了或者对列表的工作方式一无所知。任何人都可以告诉我我错了哪里。在Scala中使用展平方法给出了糟糕的结果,列出了列表中的列表
val a = List(List(1,2,3),List(4,5,6),List(7,8,9))
def flatten(xss : List[List[Any]]) : List[Any] = {
def flat(xs : List[Any]) : List[Any] = xs match {
case Nil => Nil
case head :: Nil=> head :: Nil
case head :: tail => head :: flat(tail)
}
xss match {
case Nil => Nil
case head :: Nil => flat(head)
case head :: tail => flat(head) :: flatten(tail)
}
}
flatten(a)
我认为你需要采取另一种思维会话什么压扁列表意味着,一个好的技巧我倾向于使用的表达出来换句话说,因为经常有一个功能实现匹配那么好。 – johanandren
你有没有想过使用内置的flatMap函数? – Leon
我应该实现扁平化功能而不使用扁平化方法。即使不应该使用::: – user64287