我如何转换这个列表:
List("a", "b", "c", "d")
包含以下元素的列表
List(List("a"), List("a", "b"), List("a", "b", "c"), List("a", "b", "c", "d"))
我的要求是从包含目录名称的列表构建一个相对目录路径列表,其中 a
是根目录,b
是 的叶子a
即 a/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/