Строковая интерполяция в Scala?

Я хотел спросить, есть ли какой-либо тип интерполяции строк в 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

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

Ответы

Ответ 2

Вы можете сделать это 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) !!!!

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

Ответ 3

Я использую взлома 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

Ответ 5

В эти дни (декабрь 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]"""