Интерполяция строк в 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"""