scala中StringContext支持3种插值操作:s|f|raw。分别是变量替换;字符串格式化和非转义字符。
比如:val t = s"1+1=${1+1}" // t: String = 2
val pi=3.1415926d
val s = f"$pi%2.3f" // s: String = 3.142
val x = r"a\nb" // x: String = a\nb
StringContext 还支持更高级的用法,比如可以仿照s|f|raw的实现自己实现一个隐式类,以StringContext作为参数。比如
implicit class JsonHelper(sc: StringContext) {
def json(args: Any*) = {
val params = sc.parts.Iterator
val value = args.Iterator
// ....
}
}
网友评论