如何绑定scala的heredoc中的数据?

Fre*_*ind 3 scala heredoc rawstring

val name = "mike"
val str = """Hi, {name}!"""
println(str)
Run Code Online (Sandbox Code Playgroud)

我希望它输出str as Hi, mike!,但失败了.这该怎么做?

Mor*_*itz 5

Scala不支持字符串插值.有一个编译器插件可以在http://github.com/jrudolph/scala-enhanced-strings上实现它.

没有插件,您可以使用串联或格式化字符串:

val str = name formatted "Hi, %s!"
Run Code Online (Sandbox Code Playgroud)

当然

val str = "Hi, %s!".format(name)
Run Code Online (Sandbox Code Playgroud)

  • @Freewind还可以看到有关Scala不支持字符串插值的讨论:http://goo.gl/cJ5u (2认同)
  • @Freewind,是的,我可以打开它.如果缩短的URL不起作用,您可以尝试这个直接链接:http://scala-programming-language.1934581.n4.nabble.com/Why-Martin-hates-string-interpolation-Was-Re-Formatting-Questions -Summary-td2008748.html (2认同)

pr1*_*001 5

一个彻底的hackish解决方案是使用Scala的XML插值:

val name = "Mike"
val str = <a>Hi, {name}!</a> text
Run Code Online (Sandbox Code Playgroud)

text方法返回XML构造的字符串内容,因此我们的标记被剥离.