将String转换为StringContext以评估延迟

时间:2014-03-07 08:29:03

标签: scala

在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."

有可能实现这样的目标吗?

1 个答案:

答案 0 :(得分:3)

您可以使用方法代替val:

def str(x: Int) = s"Using $x within this String."

str(11)

编辑:

传递尚未插入的字符串并在其他地方填写参数是不可能的。插值发生在编译时,因此变量必须在字符串定义的范围内。