在scala中"取消列出"(例如,展平序列序列序列......)

ami*_*mit 5 scala nested-lists flatten

在Scala中是否有一种简单的方法可以将某些事物的序列(等)序列的嵌套序列展平或"取消列表"到这些事物的简单序列中,而没有任何嵌套结构?

moh*_*hit 4

我不认为有一个 flatten` 方法可以将深度嵌套转换为序列。

编写一个简单的递归函数来完成此操作很容易


def flatten(ls: List[Any]): List[Any] = ls flatMap {
    case ms: List[_] => flatten(ms)
    case e => List(e)
  } 
 val a =  List(List(List(1, 2, 3, 4, 5)),List(List(1, 2, 3, 4, 5)))
 flatten(a)
//> res0: List[Any] = List(1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)