🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
```scala object App{ def main(args: Array[String]): Unit = { // s插值器:允许将变量引用、表达式直接插入字面字符中 val name = "James" println(s"Hello, $name") // Hello, James println(s"1+1 = ${1+1}") // 1+1 = 2 // f插值器 val height = 1.9d println(f"$name%s is $height%2.2f meters tall.") // James is 1.90 meters tall. // raw插值器 println(s"a\nb") // 输出换行 println(raw"a\nb") // 输出原始字符,对\n不转义 a\nb } } ``` `s`, `f` 和 `raw`,其本质都是定义在 StringContext 中的方法。在 2.11 以前的版本中,字符串插值对模式匹配语句不适用。 ```scala s"Hello, $name" 等价于 StringContext("Hello, ", "").s(name) s" $name Hello," 等价于 StringContext( "","Hello, ").s(name) s"hi $name Hello," 等价于 StringContext(" hi"," Hello,").s(name) ``` 可以发现,所谓字符串插值便是使用了隐式转换功能实现的,这一点可以在后面学到隐式转换相关知识点时再进行回顾。