在Scala 2.10中存在StringContext
。有了这个你可以做点什么:
val x = 10
val y = s"Using $x within this String."
现在是y == "Using 10 within this String."
但是我想在预定义的字符串上应用“s”延迟。我想做这样的事情:
val str = "Using $x within this String."
def foo(arg: String) = {
// do stuff
val x = 11
s"$arg" // enable the arg-String to use the context
}
现在应该foo(str) == "Using 11 within this String."
有可能实现这样的目标吗?
答案 0 :(得分:3)
您可以使用方法代替val:
def str(x: Int) = s"Using $x within this String."
str(11)
编辑:
传递尚未插入的字符串并在其他地方填写参数是不可能的。插值发生在编译时,因此变量必须在字符串定义的范围内。