Scala中String.format的缩写

时间:2011-10-10 18:11:51

标签: string scala

Scala中是否存在字符串插值的短语法?类似的东西:

"my name is %s" < "jhonny"

而不是

"my name is %s" format "jhonny"

3 个答案:

答案 0 :(得分:9)

不,但你可以自己添加:

scala> implicit def betterString(s:String) = new { def %(as:Any*)=s.format(as:_*) }
betterString: (s: String)java.lang.Object{def %(as: Any*): String}

scala> "%s" % "hello"
res3: String = hello

请注意,您不能使用<,因为这会与Predef中已定义的不同隐式转换冲突。

答案 1 :(得分:4)

如果您想知道作品中可能包含哪种语法

$ ./scala -nobootcp -Xexperimental
Welcome to Scala version 2.10.0.r25815-b20111011020241 

scala> val s = "jhonny"
s: String = jhonny

scala> "my name is \{ s }"
res0: String = my name is jhonny

再玩一些:

scala> "those things \{ "ne\{ "ts".reverse }" }"
res9: String = those things nest

scala> println("Hello \{ readLine("Who am I speaking to?") }")
Who am I speaking to?[typed Bozo here]Hello Bozo

答案 2 :(得分:3)

我似乎记得Martin Odersky被引用时声称“Scala编程”中提到的样式中的字符串连接是插值的有用近似。我们的想法是,如果没有空格,每次替换只会使用一些额外的字符。例如:

val x     = "Mork"
val y     = "Ork"

val intro = "my name is"+x+", I come from "+y

格式方法提供了更多的功能。 Daniel Sobral也发表了regex based技术的博客。