x + (i-6ren">
gpt4 book ai didi

scala - 从第二个元素开始的 foldLeft 的替代

转载 作者:行者123 更新时间:2023-12-03 23:18:29 25 4
gpt4 key购买 nike

我有一个 List定义为:

val l = List("1", "2", "3")

我想把它转换成字符串
"1:2:3"

一种方法如下:
l.foldLeft("")((x, y) => x + (if (x == "") "" else ":") +y)

有没有更优雅的方法?

[编辑:进一步解释]

l 的元素时,Easy Angel 的回答有效有一个'有意义' toString方法。

虽然我有 lList[String] , l可以是不覆盖 toString 的自定义类型列表方法,比如说,如:
class my(i:Int) {
val x = i
}

我也有方法
def getMy(m:my) = "Hello "+m.x

所以我想要 getMy 的输出用于代替默认输出 toString方法。

最佳答案

您可以使用 mkString List的方法:

l mkString ":"

更多信息可以在 scaladoc 中找到:

http://www.scala-lang.org/api/rc/scala/collection/Iterable.html#mkString:String

作为替代方案,您可以使用 reduceLeft例如:
l.reduceLeft(_ + ":" + _)

作为第二个问题的答案:只需将其与 map 结合使用即可。 :
l map getMy mkString ":"

关于scala - 从第二个元素开始的 foldLeft 的替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5141554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com