15

Scalaに何らかのタイプの文字列補間があるかどうかを尋ねたかったのです。私は主題を検索しましたが、'今まで私は文字列補間がないことを発見しました。次のバージョンで実装される予定はありますか?

ありがとう!

アップデート

文字列補間はscala2.10で行われる予定ですが、scala 2.10.RC1がリリースされたので試してみることができます(2012年10月20日)。このSIPforscala 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

ただし、現時点で利用可能なすべての補間器に関するドキュメントを試してみてください。独自の補間器を定義できることに注意してください。詳細については、このリンクをお試しください。

4

5 に答える 5

22

(リリースされた)scalaライブラリにはまだありません。ただし、この機能を追加するためのSIP(Scala改善プロセス)があります。

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

于 2011-10-27T14:31:40.933 に答える
14

あなたはそれを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) !!!!

ただし、前者は、単一の文字列で複数の補間を有効にするという点でより柔軟性があります(複数の引数を取ることができるため)。

于 2011-10-27T14:49:16.777 に答える
7

私はscala2.9でxmlハックを使用しています

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
于 2012-11-18T12:36:14.810 に答える
1

はい、コンパイラプラグインを介した現在のscalaリリースには文字列補間があります。http://jrudolph.github.com/scala-enhanced-stringsを参照してください。

于 2011-11-01T20:42:24.517 に答える
0

今日(2016年12月、Scala 2.12、5年後)、独自の文字列補間を作成できます。
見る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"""
于 2016-12-25T22:28:34.760 に答える