Ich schrieb das folgende einfache ProgrammWie verkette ich die Zeichenfolge richtig?
object Main extends App {
println(new MyClass toString)
}
class MyClass {
var pairs: Map[String, String] = Map[String, String](
"key1" -> "value1",
"key2" -> "value2",
"key3" -> "value3"
)
val Separator = "separator"
override def toString = {
pairs map { case (key, value) => s"$key=$value" } mkString(" ") + Separator
}
}
Ich dachte, das Programm key1=value1 key2=value2 key3=value3 separator
drucken. Aber es tut nicht gut. Stattdessen druckt es:
key1=value1 separatorkey2=value2 separatorkey3=value3
Warum? Ich dachte, ich baute zuerst eine String-Repräsentation der Karte und fügte dann separator
zur Repräsentation hinzu.
Anscheinend 'mkString' hat Vorrang vor' + ', was ein bisschen komisch aber verständlich ist. Machen Sie sie zu expliziten Methodenaufrufen oder umschließen Sie sie in Klammern. – Bergi