я понимаю чувство, что строка интерполяция не является необходимой, потому что это не намного более кратким, чем конкатенация:
val str2 = "Hello, ${str1}!"
val str2 = "Hello, "+str1+"!"
Утверждая, что Оператор «+» на строках должен быть отформатирован без пробела, Martin Odersky says,
С новым соглашением необходимость замены строк (часто , выдвинутых в списках Scala) все исчезает. Сравнить:
"test results: ${result1}, ${result2}"
с первой версией выше. Вы сохранили один символ за замену , вряд ли стоит новое соглашение о синтаксисе. Другими словами, синтаксис строки подстановки Scala написана
"+...+"
вместо
${...}
или некоторые другие аналогичные предложения. С другой стороны, если вы настаиваете на пробелах вокруг +, история становится менее убедительней.
Кстати, см. Сообщение в блоге «String Interpolation in Scala», где он эмулируется с использованием отражения.
Этот вопрос похож на http://stackoverflow.com/ вопросы/2183503/substitute-values-in-a-string-with-placeholders-in-scala/2189134 с разными ответами. –
@Mitch: На самом деле это не тот же вопрос. Другой спрашивающий хотел знать, как это сделать; Я хотел знать обоснование решения дизайнеров Scala, о котором хорошо сказано ниже. –
В настоящее время (Interpolation Stala 2.10 String): 's« Hello, $ str1 »' (http://docs.scala-lang.org/overviews/core/string-interpolation.html) –