```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別名
- 樣例類
- 枚舉類
- 泛型類
- 包與包對象
- 模式匹配
- 基本語法
- 匹配模式
- 偏函數
- 注解
- 運算符
- 正則表達式
- 隱式類
- 異常處理
- 高級類型
- 結構類型
- 復合類型