首页 > 解决方案 > Scala从变量中插入字符串

问题描述

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

val name = "Bill"
val result = s"My Name is ${name}"

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

val name = "Bill"
val greeting = "My Name is ${name}"
val result = s"${greeting}"

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

标签: scalastring-interpolation

解决方案


Scala 中的字符串插值并不像您期望的那样组成。

对此问题进行了辩论。人们想要它,但人们并不总是得到他们想要的东西。

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

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


推荐阅读