Scala 展平 String 和 List[String] 的列表

标签 scala collections functional-programming

需要一些有关 Scala 展平的帮助。

我有一个 StringList[String] 列表。

示例:List("I", "can't", List("do", "this"))

预期结果:List("I", "can't", "do", "this")

我做了很多实验,最紧凑的解决方案是:

val flattenList = list.flatten {
  case list: List[Any] => list
  case x => List(x)
}

但这似乎非常棘手且难以理解。对于更简单的代码有什么建议吗?

谢谢。

最佳答案

“棘手且难以理解”的是在同一列表中混合不同类型的元素。这就是你的问题的根本原因。一旦你有了这个,就没有办法绕过必须扫描列表,并检查每个元素的类型来纠正它,并且你的解决方案与任何解决方案一样好(当然,比另一个中建议的解决方案更好)回答:))。

如果我是你,我真的会重新考虑导致拥有这样的异构列表的代码路径。这实际上并不是一个好方法,因为您以这种方式颠覆了类型安全,并最终得到 List[AnyRef] ,可以包含……嗯,任何东西。

关于Scala 展平 String 和 List[String] 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40338975/

相关文章:

scala - Scala 惯用的嵌套循环

java - 如何更改 Akka 应用程序的默认序列化程序?

c# - 我应该使用什么类型的集合?

javascript - 使用过滤器仅返回键的特定属性

python - 用于顺序、条件和修改函数应用的高阶函数?

Scala Future,适用于 Either 的 flatMap

wpf - 如何将 List 作为 ItemSource 绑定(bind)到 XAML 中的 ListView?

java集合: Filter using mapped values and then return to initial values

haskell - Haskell中通过索引访问的语法糖,惰性和列表元素之间的关系是什么?

scala - 从Scala 2.9到2.10的动态特征差异