scala - 在 Scala 中,如何组契约(Contract)一个 List 的元素序列?

标签 scala functional-programming

我如何转换这个列表:

List("a", "b", "c", "d")

包含以下元素的列表

List(List("a"), List("a", "b"), List("a", "b", "c"), List("a", "b", "c", "d"))

我的要求是从包含目录名称的列表构建一个相对目录路径列表,其中 a 是根目录,b 的叶子aa/b

例子:

"fruit", "tropical", "mango"

转换为:

"fruit", "fruit/tropical", "fruit/tropical/mango"

编辑:我可以反复执行此操作,但我正在寻找一个功能性解决方案。

最佳答案

你可以使用 inits 来实现你正在寻找的类似的东西:

val xs = List("a", "b", "c", "d")
val ys = xs.inits.toList.reverse.drop(1)

解释:

xs.inits.toList 会给你这个结果:

List(List(a, b, c, d), List(a, b, c), List(a, b), List(a), List())

现在你可以反转它并删除第一个元素并得到这个:

List(List(a), List(a, b), List(a, b, c), List(a, b, c, d))

然后,将您得到的结果生成一个 String:

ys.map(_.mkString("/")) // results in List(a, a/b, a/b/c, a/b/c/d)

关于scala - 在 Scala 中,如何组契约(Contract)一个 List 的元素序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22476983/

相关文章:

scala - scala中以下两种模式匹配案例有什么区别

haskell - 如何在单个函数中执行多个语句?

python - 如何在列表字典中获取特定值

haskell - 没有反引号的函数 elem 不起作用

scala - 为什么 paramGridBuilder 与 CountVectorizer 发生 scala 错误?

scala - 我如何单元测试/模拟 ElasticSearch

javascript - 函数式 JS - forEach 函数不起作用

scala - 为什么命令式语言没有模式匹配?

scala - 导入 sbt 项目时提取结构失败

scala - Spark 通过 SaveMode 写入数据作为 Append 或 overwrite