【发布时间】:2011-05-04 06:49:19
【问题描述】:
抱歉,如果这是一个常见问题解答,我在任何地方都没有找到。这可能是一个新手 Scala 和/或函数式编程问题。我有很多 Java 和 OO 经验,但我是 Scala 和 FP 的新手。
假设我有一个列表,可能有:
a,b,b,c1,b,d,c2,d,a,ce,b,a,c1,b,ce,a,b
现在我要处理这个列表并返回一个 XML 树(scala.xml.NodeSeq 或其他)。棘手的部分是我需要用一个包含任何以下项目的跨度替换任何 c
所以我想得到这样的东西:
这是在 Scala 中,我更愿意以“纯功能方式”并使用 Scala 最佳实践来执行此操作。我很沮丧,我无法理解这一点。
谢谢。
【问题讨论】:
-
我现在正在打电话,无法提供真正的答案。但在其他人回答之前,让我提示一下。您应该在该列表上调用 foldLeft。这将允许您在遍历列表时将多个元素折叠成单个元素。
-
列表条目是字符串,还是只是使用 a、b 等作为其他数据类型的占位符?另外,数据格式是否正确?例如,你能在 c1 之后得到一个 c3,还是连续得到两个 c2? cN 之间总会有中间值吗?
标签: scala functional-programming scala-collections