Ответ 1
Это еще не в (выпущенной) библиотеке scala. Но для добавления этой функции существует SIP (Scala Процесс улучшения):
http://docs.scala-lang.org/sips/pending/string-interpolation.html
Я хотел спросить, есть ли какой-либо тип интерполяции строк в Scala. Я сделал поиск по этому вопросу, но до сих пор я обнаружил, что нет интерполяции строк. Планируется ли реализация в следующих версиях?
Спасибо!
UPDATE
Интерполяция строк будет в 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
Но попробуйте документацию обо всех доступных интерполяторах. Обратите внимание, что вы можете определить свои собственные интерполяторы! Попробуйте эту ссылку для получения дополнительной информации.
Это еще не в (выпущенной) библиотеке scala. Но для добавления этой функции существует SIP (Scala Процесс улучшения):
http://docs.scala-lang.org/sips/pending/string-interpolation.html
Вы можете сделать это C-style:
"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"""[email protected]"""
import contextual.examples.email._
email"""[email protected]"""