需要一些有关 Scala 展平的帮助。
我有一个清单String
and 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)
}
但这似乎非常棘手且难以理解。对于更简单的代码有什么建议吗?
Thanks.
“棘手且难以理解”的是在同一列表中混合不同类型的元素。这就是你的问题的根本原因。一旦你有了这个,就没有办法绕过必须扫描列表,并检查每个元素的类型来纠正它,并且你的解决方案与任何解决方案一样好(当然,比另一个中建议的解决方案更好)回答 :))。
如果我是你,我真的会重新考虑导致拥有这样的异构列表的代码路径。这并不是一个真正的好方法,因为你以这种方式颠覆了类型安全,并最终得到一个List[AnyRef]
,可以包含……嗯,任何东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)