Kotlin2.2.0实用语法之Multi-dollar

44 阅读1分钟

众所周知,Kotlin的模板字符串插值是使用$xxx或则${xxx}来进行实现,但是对于一些框架比如Spring来说他刚好就和属性注入冲突了,就导致我们得写@Value("\${name}")得把$给转义下,给人一种无力的妥协感,而且确实不好看。但是在Kotlin2.2.0新增的Multi-dollar string interpolation语法下,完美的解决了$符在字符串中插值时可能与别的语法存在冲突的问题。

简单的来说就是把$的插值模式加了一道检查,如果字符串前面有$符号,那么字符串中得匹配到相同数量的$符号时才进行插值。

image.png

//kotlin2.2.0以前的写法
@Value("\${name}")
var name: String = "setruth"

//kotlin2.2.0以后的写法,字符串前面两个$$那么字符串中匹配到相应数量才会插值否则直接当作字符使用
@Value($$"${name}")
var name: String = "setruth"

由此可得

fun main(args: Array<String>) {
    val name = "setruth"
    print($$$$$$$$"$$$$$$$$name,$$$$$$$name") //八个$时才进行插值
    //setruth,$$$$$$$name
}