У меня есть List
, определенное как:
val l = List("1", "2", "3")
Я хочу преобразовать его в строку
"1:2:3"
Один из способов заключается в следующем:
l.foldLeft("")((x, y) => x + (if (x == "") "" else ":") +y)
Есть ли более элегантный метод?
[РЕДАКТИРОВАТЬ: дальнейшие объяснения]
Ответ Easy Angel срабатывает, когда элементы l
имеют «значимый» метод toString
.
хотя у меня l
как List[String]
, l
может быть списком пользовательского типа, который не переопределяет метод toString
, скажем, как:
class my(i:Int) {
val x = i
}
У меня тоже есть метод
def getMy(m:my) = "Hello "+m.x
Так что я бы хотел, чтобы вывод getMy
использовался вместо вывода метода toString
по умолчанию.