第1章Scala入門11.1Scala簡介2
1.2Scala開發環境搭建2
1.2.1軟件準備2
1.2.2JDK的安裝與配置3
1.2.3ScalaSDK的安裝與配置5
1.2.4IntellijIDEA的安裝與配置6
1.3ScalaHelloWorld8
1.3.1創建ScalaProject8
1.3.2配置項目代碼目錄結構9
1.3.3創建應用程序對象11
1.3.4運行代碼12
1.4IntellijIDEA常用快捷鍵13
1.4.1代碼編輯類常用快捷鍵13
1.4.2導航快捷鍵14
1.4.3編譯、運行及調試15
1.4.4代碼格式化15
1.5交互式命令行使用15
1.5.1Scala內置交互式命令行15
1.5.2ScalaConsole交互式命令行17
1.5.3ScalaWorksheet的使用19
小結20
第2章變量及基本數據類型21
2.1變量22
2.1.1變量定義22
2.1.2lazy變量23
2.2基本數據類型24
2.2.1Int類型24
2.2.2Float類型25
2.2.3Double類型25
2.2.4Char類型25
2.2.5String類型26
2.2.6Boolean類型27
2.3基本類型操作27
2.3.1算術運算操作27
2.3.2關系運算操作28
2.3.3邏輯運算操作28
2.3.4位運算操作29
2.3.5對象比較運算操作30
2.3.6字符串運算操作31
2.4運算符的優先級32
2.5元組類型33
2.6符號類型34
小結35
第3章程序控制結構36
3.1if語句37
3.1.1if語句37
3.1.2if…else…語句37
3.1.3if...elseif...else…語句37
3.1.4if的嵌套使用38
3.1.5if表達式39
3.2while循環語句39
3.2.1while語句的使用39
3.2.2dowhile語句的使用40
3.3for循環語句41
3.3.1基礎for循環41
3.3.2有過濾條件的for循環44
3.3.3多重for循環44
3.3.4作為表達式的for循環45
小結45
第4章集合46
4.1集合簡介47
4.2數組49
4.2.1定長數組49
4.2.2變長數組ArrayBuffer50
4.2.3數組的遍歷52
4.2.4遍歷生成數組53
4.2.5常用函數53
4.3.6多維數組54
4.3列表(List)55
4.3.1列表的創建55
4.3.2List常用函數56
4.3.3List伴生對象方法58
4.4集(Set)59
4.5映射(Map)61
4.6隊列(Queue)63
4.7棧(Stack)64
小結66
第5章函數67
5.1函數68
5.2值函數69
5.2.1值函數的定義69
5.2.2值函數的簡化71
5.3高階函數73
5.3.1高階函數的定義73
5.3.2高階函數的使用74
5.4閉包78
5.5函數柯里化80
5.6部分應用函數81
5.7偏函數83
小結85
第6章Scala面向對象編程(上)86
6.1類與對象87
6.1.1類的定義87
6.1.2創建對象88
6.1.3類成員的訪問88
6.1.4單例對象90
6.1.5應用程序對象91
6.1.6伴生對象與伴生類93
6.2主構造函數96
6.2.1主構造函數的定義96
6.2.2默認參數的主構造函數98
6.2.3私有主構造函數99
6.3輔助構造函數100
6.3.1輔助構造函數的定義100
6.3.2輔助構造函數中的默認參數102
6.4繼承與多態104
6.4.1類的繼承104
6.4.2構造函數執行順序107
6.4.3方法重寫108
6.4.4多態109
6.5成員訪問控制111
6.5.1默認訪問控制112
6.5.2protected訪問控制113
6.5.3private訪問控制114
6.5.4private[this]訪問控制116
6.5.5主構造函數中的成員訪問控制121
6.6抽象類125
6.6.1抽象類的定義125
6.6.2抽象類的使用126
6.7內部類與內部對象128
6.8匿名類130
小結131
第7章Scala面向對象編程(下)132
7.1trait簡介133
7.2trait的使用135
7.2.1trait的幾種不同用法135
7.2.2混入trait的類對象構造138
7.2.3提前定義與懶加載140
7.3trait與類144
7.3.1trait與類的相似點144
7.3.1trait與類的不同點146
7.4多重繼承問題147
7.5自身類型148
小結151
第8章包(package)152
8.1包的定義153
8.2包的使用和作用域155
8.2.1包的使用155
8.2.2包作用域156
8.3包對象159
8.4import高級特性160
8.4.1隱式引入160
8.4.2引入重命名160
8.4.3類隱藏161
小結162
第9章模式匹配163
9.1模式匹配簡介164
9.2模式匹配的7大類型167
9.2.1常量模式167
9.2.2變量模式167
9.2.3構造函數模式169
9.2.4序列模式170
9.2.5元組模式171
9.2.6類型模式172
9.2.7變量綁定模式173
9.3模式匹配原理174
9.3.1構造函數模式匹配原理174
9.3.2序列模式匹配原理176
9.4正則表達式與模式匹配177
9.4.1Scala正則表達式177
9.4.2正則表達式在模式匹配中的應用180
9.5for循環中的模式匹配183
9.6模式匹配與樣例類、樣例對象185
9.6.1模式匹配與樣例類185
9.6.2模式匹配與樣例對象187
小結190
第10章隱式轉換191
10.1隱式轉換簡介192
10.2隱式轉換函數193
10.2.1隱式轉換函數的定義193
10.2.2隱式轉換函數名稱194
10.3隱式類與隱式對象195
10.3.1隱式類195
10.3.2隱式對象196
10.4隱式參數與隱式值197
10.4.1隱式參數197
10.4.2隱式值199
10.4.3隱式參數使用常見問題201
10.5隱式轉換規則與問題204
10.5.1隱式轉換的若干規則204
10.5.2隱式轉換需注意的問題208
小結210
第11章類型參數211
11.1類與類型212
11.2泛型214
11.2.1泛型類215
11.2.2泛型接口與泛型方法216
11.2.3類型通配符217
11.3類型變量界定220
11.4視圖界定222
11.5上下文界定223
11.6多重界定226
11.7協變與逆變227
11.8高級類型230
11.8.1單例類型231
11.8.2類型投影235
11.8.3類型別名237
11.8.4抽象類型238
11.8.5復合類型240
11.8.6函數類型241
小結243
第12章Scala并發編程基礎244
12.1Scala并發編程簡介245
12.1.1重要概念245
12.1.2Actor模型247
12.1.3Akka并發編程框架247
12.2Actor249
12.2.1定義Actor249
12.2.2創建Actor250
12.2.3消息處理255
12.2.4Actor的其他常用方法260
12.2.5停止Actor261
12.3TypedActor265
12.3.1TypedActor定義265
12.3.2創建TypedActor266
12.3.3消息發送267
12.3.4停止運行TypedActor269
12.4Dispatcher271
12.4.1常用Dispatcher271
12.4.2ExecutionService274
12.5Router277
12.6容錯279
12.6.1Actor的4種容錯機制279
12.6.2Supervison279
小結285
第13章Scala與Java的互操作286
13.1Java與Scala集合互操作287
13.1.1Java調用Scala集合287
13.1.2Scala調用Java集合288
13.1.3Scala與Java集合間相互轉換分析289
13.2Scala與Java泛型互操作290
13.2.1Scala中使用Java泛型291
13.2.2Java中使用Scala泛型291
13.3Scalatrait在Java中的使用293
13.4Scala與Java異常處理互操作298
小結299
參考文獻300