Scala 字符串插值器
Scala 提供了三种创新的字符串插值方法:s
,f
和raw
,使用他们我们可以方便快捷的组合字符串。
用法
s 字符串插值器
在任何字符串前加上s
,就可以直接在串中使用变量了,在生成字符串的时候会隐式调用其toString
方法。
1 | class Complex(val real: Double, val imaginary: Double) { |
字符串插值器也可以处理任意的表达式:
1 | println(s"1+1=${1 + 1}") |
f 插值器
在任何字符串字面前加上f
,就可以生成简单的格式化串,功能相似于其他语言中的printf
函数。
类似于 Java 中的
String.format
1 | val height = 1.9d |
raw 插值器
raw
插值器可以保证其内的字符不被编码,如\n
不会被处理为回车
1 | println(s"a\nb") // a回车b |
高级用法
在 worksheet 中输入如下代码运行
1 | id"string content" |
发现编译器提示:Error:(1, 68) value id is not a member of StringContext
即:该格式会隐式调用 StringContext 的与前缀插值器同名的方法
所以我们自定义插值器只需要这样就可以了:
1 | implicit class JsonHelper(val sc: StringContext) extends AnyVal { |
结语
字符串插值器可以帮助我们快速格式化字符串,s
会隐式调用其toString
方法,f
需要格式模板字符串,raw
不会编码字符,我们只需要按需使用即可。