は、私はプログラムがkey1=value1 key2=value2 key3=value3 separator
を印刷するだろうと思った次の簡単なプログラム文字列を正しく連結する方法は?
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
}
}
を書きました。しかし、それは騒がしいです。代わりに、それは印刷します:
key1=value1 separatorkey2=value2 separatorkey3=value3
なぜですか?最初に地図の文字列表現を作成してから、separator
を表現に追加したと思いました。
明らかに 'mkString'は' + 'よりも優先されます。これはちょっと変わっていますがわかりやすいです。それらを明示的なメソッド呼び出しにするか、カッコで囲みます。 – Bergi