Scala 从变量中插入字符串

pac*_*man 6 scala string-interpolation

在这种情况下,字符串插值工作正常:

val name = "Bill"
val result = s"My Name is ${name}"
Run Code Online (Sandbox Code Playgroud)

当我将它引入变量时,它没有获得插值:

val name = "Bill"
val greeting = "My Name is ${name}"
val result = s"${greeting}"
Run Code Online (Sandbox Code Playgroud)

直接包装greeting不是合适的解决方案,我必须像普通字符串一样处理问候语。

som*_*ytt 6

Scala 中的字符串插值不会按照您期望的方式进行组合。

对此问题一直存在争议。人们想要它,但人们并不总是能得到他们想要的。

您可以想象编写一些协同工作的宏。一个定义了一个采用字符串的函数,另一个知道如何通过使用范围内正确命名的值调用它来插入它。

还值得补充的是,插值不是通用的运行时模板机制。例如,您无法从以下形式的文件中读取字符串"$greeting"并对其运行插值替换。