jra*_*oyo 2 functional-programming scala
如何转换此列表:
List("a", "b", "c", "d")
Run Code Online (Sandbox Code Playgroud)
进入包含以下元素的列表
List(List("a"), List("a", "b"), List("a", "b", "c"), List("a", "b", "c", "d"))
Run Code Online (Sandbox Code Playgroud)
我的要求是从包含目录名称的列表构建相对目录路径的列表,其中a是根目录,并且b是aie 的叶子a/b
例:
"fruit", "tropical", "mango"
Run Code Online (Sandbox Code Playgroud)
转换为:
"fruit", "fruit/tropical", "fruit/tropical/mango"
Run Code Online (Sandbox Code Playgroud)
编辑:我可以迭代地执行此操作,但我正在寻找功能性解决方案.
你可以inits用来达到你想要的类似的东西:
val xs = List("a", "b", "c", "d")
val ys = xs.inits.toList.reverse.drop(1)
Run Code Online (Sandbox Code Playgroud)
说明:
xs.inits.toList 会给你这个结果:
List(List(a, b, c, d), List(a, b, c), List(a, b), List(a), List())
Run Code Online (Sandbox Code Playgroud)
现在你可以反转它并删除第一个元素并获得:
List(List(a), List(a, b), List(a, b, c), List(a, b, c, d))
Run Code Online (Sandbox Code Playgroud)
然后,只需String得到一个结果:
ys.map(_.mkString("/")) // results in List(a, a/b, a/b/c, a/b/c/d)
Run Code Online (Sandbox Code Playgroud)