我想问一下Scala中是否有任何类型的字符串插值。我已经对这个主题进行了搜索,但‘到目前为止,我发现没有字符串插值。有计划在下一个版本中实现吗?
谢谢!
更新
字符串插值将出现在scala 2.10中,你可以尝试一下,因为scala 2.10.RC1已经发布了(2012年10月20日)。你可以查看scala 2.11的这个SIP,它声明模式匹配器中的插值字符串将是有效的语法。使用新的字符串插值,您可以执行以下操作:
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
但是在目前所有可用的插值器上尝试documentation。请注意,您可以定义自己的插值器!有关更多信息,请尝试this link。
发布于 2011-10-27 22:31:41
它还不在(发布的) scala库中。但是有一个SIP (Scala改进过程)用于添加此功能:
http://docs.scala-lang.org/sips/pending/string-interpolation.html
发布于 2011-10-27 22:49:17
你可以像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) !!!!
尽管前者在单个字符串中启用多个插值方面更灵活(因为它可以接受多个参数)。
发布于 2012-11-18 20:36:15
我在Scala2.9上使用了xml hack
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
https://stackoverflow.com/questions/7917462
复制相似问题