【问题标题】:"unlist" in scala (e.g flattening a sequence of sequences of sequences...)scala中的“unlist”(例如展平一系列序列的序列......)
【发布时间】:2015-04-20 22:53:35
【问题描述】:

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

【问题讨论】:

标签: scala nested-lists flatten


【解决方案1】:

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

【讨论】:

  • 这在紧要关头很有效,但这里提供的解决方案:stackoverflow.com/questions/12160596/… 是类型安全的
  • 抱歉这个问题,但你不应该写+Any吗?
  • @BenReich - OP 想要一种简单的方法,并且您的链接中给出的解决方案对于一个简单的案例来说过于复杂(即,如果它只是列表等的嵌套)
  • @DmitryGinzburg - 它甚至不能用 +Any 编译 :) 对不起,但我不知道你在做什么
  • @mohit 我同意——我只是想说有一个可用的类型安全选项,所以如果这是一个常见问题,那么该选项更可取!
猜你喜欢
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 2018-04-15
  • 2019-11-26
  • 2018-07-13
  • 2017-07-13
  • 1970-01-01
相关资源
最近更新 更多