需要一些有关 Scala 展平的帮助。
我有一个 String
和 List[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/