Сокращение от String.format в Scala - PullRequest
7 голосов
/ 10 октября 2011

Существует ли короткий синтаксис для интерполяции строк в Scala?Что-то вроде:

"my name is %s" < "jhonny"

Вместо

"my name is %s" format "jhonny"

Ответы [ 3 ]

9 голосов
/ 10 октября 2011

Нет, но вы можете добавить его самостоятельно:

scala> implicit def betterString(s:String) = new { def %(as:Any*)=s.format(as:_*) }
betterString: (s: String)java.lang.Object{def %(as: Any*): String}

scala> "%s" % "hello"
res3: String = hello

Обратите внимание, что вы не можете использовать <, поскольку это может конфликтовать с другим неявным преобразованием, уже определенным в Predef.

4 голосов
/ 11 октября 2011

Если вам интересно, какой синтаксис может быть в работах

$ ./scala -nobootcp -Xexperimental
Welcome to Scala version 2.10.0.r25815-b20111011020241 

scala> val s = "jhonny"
s: String = jhonny

scala> "my name is \{ s }"
res0: String = my name is jhonny

Игра еще немного:

scala> "those things \{ "ne\{ "ts".reverse }" }"
res9: String = those things nest

scala> println("Hello \{ readLine("Who am I speaking to?") }")
Who am I speaking to?[typed Bozo here]Hello Bozo
3 голосов
/ 10 октября 2011

Кажется, я помню, как Мартина Одерски цитировали, утверждая, что конкатенация строк в стиле, представленном в "Программирование в Scala", является полезным приближением к интерполяции. Идея состоит в том, что без пробелов вы используете только несколько дополнительных символов для каждой замены. Например:

val x     = "Mork"
val y     = "Ork"

val intro = "my name is"+x+", I come from "+y

Метод форматирования обеспечивает гораздо большую мощность. Даниэль Собрал также ведет блог по регулярному выражению .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...