```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)
```
可以发现,所谓字符串插值便是使用了隐式转换功能实现的,这一点可以在后面学到隐式转换相关知识点时再进行回顾。
- Scala是什么?
- Scala特性
- 开发环境搭建
- 环境搭建
- windows下的环境搭建
- IntelliJ IDEA环境搭建
- Scala关键字
- Hello, World
- 数据类型
- 数据类型
- 数据类型层次结构
- 字面量
- Null类型
- Nothing类型
- Unit类型
- 变量与常量
- type定义类型别名
- 字符串插值器
- 条件控制
- 循环控制
- 数组
- 元组
- 集合
- 集合分类
- List常用操作
- Set常用操作
- Map常用操作
- 函数
- 函数声明与调用
- 函数与方法的区别
- 函数注意事项
- 匿名函数
- 可变参数
- 高阶函数
- 中置表达式
- 函数嵌套
- 函数科里化
- 隐式参数
- 隐式函数
- 闭包
- 类和对象
- Java与Scala的比较
- 有关类与对象概念
- 类
- 类的定义和调用
- 类的继承
- 抽象类
- 单例对象
- 伴生对象和伴生类
- 特质
- 定义特质
- 混入特质
- 抽象类与特质的选择
- 自身类型
- 依赖注入
- this别名
- 样例类
- 枚举类
- 泛型类
- 包与包对象
- 模式匹配
- 基本语法
- 匹配模式
- 偏函数
- 注解
- 运算符
- 正则表达式
- 隐式类
- 异常处理
- 高级类型
- 结构类型
- 复合类型