"不公开"在scala中(例如,展平序列序列序列......)

时间:2015-02-19 14:35:38

标签: scala nested-lists flatten

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

1 个答案:

答案 0 :(得分:3)

我认为没有一种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)