Интерполяция строк в Scala?

Я хотел спросить, есть ли какой-либо тип Строковой интерполяции в Scala. Я сделал поиск по этому вопросу, но до сих пор я обнаружил, что нет Строковой интерполяции. Планируется ли реализация в следующих версиях?

спасибо!

обновление

интерполяция строк будет в scala 2.10, которую вы можете попробовать с scala 2.10.Rc1 является выход (20/10/2012). Вы можете проверить это SIP для scala 2.11 который состояния, интерполированные строки в сопоставителе шаблонов будут допустимым синтаксисом. С новой Строковой интерполяцией вы можете сделать что-то вроде этого:

val age = 28
val name = "Gerry"

s"My name is $name and I am $age years old"
res0: String = My name is Gerry and I am 28 years old

но попробовать документация на всех интерполяторах, доступных на данный момент. Обратите внимание, что вы можете определить свои собственные интерполяторы! Попробуй!--16-->этой ссылке для получения дополнительной информации.

5 ответов


его еще нет в (выпущенной) библиотеке scala. Но есть SIP (процесс улучшения Scala) для добавления этой функции:

http://docs.scala-lang.org/sips/pending/string-interpolation.html


вы можете сделать это в стиле C:

"Interpolate my %s here" format List(1,2,3)

//String = Interpolate my List(1, 2, 3) here

или

List(1,2,3) formatted "Interpolate my %s here"

вы можете использовать их на чем угодно с toString (т. е. что угодно)

case class Foo(n: Int)
Foo(42) formatted "Here is a %s !!!!"
//String = Here is a Foo(42) !!!!

хотя первый является более гибким с точки зрения включения нескольких интерполяций в одной строке (поскольку он может принимать несколько аргументов).


Я использую XML-Хак на scala 2.9

val age = 28
val name = "Gerry"

<a>My name is {name} and I am {age} years old</a>.text
res0: String = My name is Gerry and I am 28 years old

да, существует интерполяция строк в текущих выпусках scala через плагин компилятора см.http://jrudolph.github.com/scala-enhanced-strings


в эти дни (декабрь. 2016, Scala 2.12, пять лет спустя), вы можете написать свою собственную интерполяцию строк.
См.co.ntextu.al

Contextual-это небольшая библиотека Scala, которая позволяет вам определять собственные строковые интерполяторы-строковые литералы с префиксами, такие как uri"https://google.com" которые определяют, как они должны оцениваться, во время выполнения и во время компиляции, при написании только очень обычного пользовательского кода: нет макросов!

например, contextual/examples/email.scala позволяет проверить во время компиляции действительность адреса электронной почты.

import contextual.examples.email._
email"""info@scala.world"""

import contextual.examples.email._
email"""john.smith@hotmail.com"""