s插值器

可以解析字符串中的变量,可以调用方法,还能进行计算。实际调用的是 StringContext 中的 s 方法。

var name = "test"
println(s"Hi $name")
println(s"Hi ${name}qq")

f插值器

它除 s 的功能外(不指定格式就和 s 一样),还能进行格式化输出,在变量后用 % 指定输出格式,格式的说明参照 Java 的 Formatter javadoc。实际调用的是 StringContext 中的 f 方法。

val height = 1.9d
val name = "James"
println(f"$name%s is $height%2.2f meters tall") // James is 1.90 meters tall

raw插值

raw 能让字符串原原本本的输出来,而不是产生控制效果。

scala> println(raw"a\nb\tc")
a\nb\tc

这跟python的r'asd\nb'很像呢,r->raw

此外还可以通过隐式类为 StringContext 类增加相应的方法。实现自己的插值器。