Scala編程實戰

Scala編程實戰

《Scala編程實戰》是2016年由機械工業出版社出版的一本圖書。

基本介紹

  • 書名:Scala編程實戰
  • 作者:Alvin Alexander
  • 出版時間:2016年7月1日
  • ISBN:9787111526865
出版信息,內容簡介,作者簡介,圖書目錄,
  • ISBN:9787111526865
  • 版次:1
  • 商品編碼:11935577
  • 品牌:機工出版
  • 包裝:平裝
  • 叢書名:O'Reilly精品圖書系列
  • 開本:16開
  • 出版時間:2016-07-01
  • 用紙:膠版紙
本書向讀者介紹如何省時省力地使用Scala構建面向對象、函式式、並發套用。書中囊括250個實用技巧以及700多個代碼實例,覆蓋了開始學習Scala語言、類庫和工具時*常見的問題。本書可作為學習使用JVM語言籃歡趨墊的理想參考書,同時也適用於有經驗的Scala開發者。
Alvin Alexander(devdaily.com創始人)使用Scala構建可擴展性高、基於組件的並行和分散式套用,將大量實用經驗匯集在本書中。結合真實的使用民鑽兵燥場景,為讀者提供了以下實用技巧:
- 字元串、數值類型和控制結構
- 類、方法、對象、特質和包
- 多種情況下的函式式編程
- Scala豐富的集合類及方法
- 使用Akka類庫進行並發
- 使用Scala REPL以及SBT構建工具
- 客戶端和伺服器端的Web服務
- 與SQL和NoSQL資料庫互動
- Scala開發的*佳實踐
Alvin Alexander,擁有德州農工大學航天工程學位,從1999年開始就是Java/OOP程式設計師、指導者。他是Valley Programing軟體諮詢公司創始人,同時在他的個人主頁擔紙上提供了Java、Scala、Ruby等程式語言的教程。
前言..1
第1章字元串.. 11
1.1 測試字元串的相等性.14
1.2 創建多個字元串..16
1.3 分隔字元串.17
1.4 字元串中的變數代換.19
1.5 挨個處理字元串中的字元23
1.6 字元串中的查找模式.27
1.7 字元企趨危串中的替換模式.30
1.8 抽取String 中模式匹配的部分31
1.9 訪問字元串中的一個字元33
1.10 在String 類中添加自定義的方法34
第2章數值..39
2.1 從字元串到數值..40
2.2 數值類型轉換44
2.3 重載默認數值類型..45
2.4 替代++ 和--47
2.5 浮點數的比較49
2.6 處理邀甩禁大數..51
2.7 生成隨機數.53
2.8 創建一個數值區間、列表或者數組55
2.9 格式化數值和金額..57
第3章控制結構.60
3.1 for 和foreach 循環.61
3.2 在for 循環中使用多個計數器.67
3.3 在for 循環中嵌入if 語句(衛語句)69
3.4 創建for 表達式(for/yield 組合).70
3.5 實現break 和continue..72
3.6 像三元運算符一樣使用if.77
3.7 像switch 語句一樣使用匹配表達式.78
3.8 一條case 語句匹配多個條件83
3.9 將匹配表達式的結洪檔芝果賦值給變數84
3.10 訪問匹配表達式預設case 的值84
3.11 在匹配表達式中使用模式匹配..85
3.12 在匹配表達式中使用Case 類..92
3.13 給Case 語句添加if 表達式(衛語句).93
3.14 使用匹配表達式替換isInstanceOf.94
3.15 在匹配表達式中使用List..95
3.16 用try/catch 匹配一個或者更多的異常97
3.17 在try/catch/finally 塊中使用變數前定義變數.98
3.18 創建自定義控制結構100
第4章類和屬性..103
4.1 創建一個主構造函式..104
4.2 控制構造函式欄位的可見性108
4.3 定義輔助構造函式 111
4.4 定義私有的主構造函式.115
4.5 設定構造函式參數的默認值116
4.6 覆寫默認的訪問和修改方法118
4.7 阻止生成getter 和setter 方法.121
4.8 將代碼塊或者函式賦給欄位123
4.9 設定未初始化的var 欄位類型..125
4.10 在繼承類時處理構造函式參數127
4.11 調用父類的構造函式129
4.12 何時使用抽象類..131
4.13 在抽象基類(或者特質) 里定義屬性..133
4.14 用Case 類生成模板代碼..137
4.15 定義一個equals 方法(對象的相等性)..141
4.16 創建內部類144
第5章方法147
5.1 控制方法作用域坑阿記148
5.2 調用父類的方法152
5.3 方法參數默認值154
5.4 使用參數名..157
5.5 定義一個返回多個值(Tuples) 的方法..159
5.6 調用getter/setter 方法時不使用括弧.160
5.7 創建接受變參的方法..162
5.8 方法的異常聲明..164
5.9 支持鏈式調用編碼風格.166解決辦法167
第6章對象170
6.1 對象的強制轉換171
6.2 Java.class 的Scala 等價類173
6.3 確定對象所屬的類174
6.4 用Object 啟動一個套用..175
6.5 用object 創建單例..177
6.6 用伴生類創建靜態成員.178
6.7 將通用代碼放入包對象.180
6.8 不使用new 關鍵字創建對象實例183
6.9 在Scala 中用apply 方法實現工廠方法..187
第7章包和導入..190
7.1 花括弧風格的包記號法.191
7.2 引入一個或多個成員..192
7.3 在導入時重命名成員..194
7.4 在引入時隱藏一個類..195
7.5 使用靜態導入.196
7.6 在任意地方使用Import 語句.197
第8章特質200
8.1 特質用作接口.200
8.2 使用特質中的抽象欄位和實際欄位.203
8.3 像抽象類一樣使用特質.204
8.4 簡單混入特質.205
8.5 通過繼承來限制特質的使用範圍.206
8.6 限定特質只可用於指定類型的子類.208
8.7 保證特質只能被添加到只有一個特定方法的類型..210
8.8 為對象實例中添加特質.211
8.9 像特質一樣繼承一個Java 接口212
第9章函式式編程..214
9.1 使用函式字面量(匿名函式)..215
9.2 將函式作為變數216
9.3 定義接受簡單函式作為參數的方法.220
9.4 更多複雜的函式222
9.5 使用閉包226
9.6 使用部分套用函式231
9.7 創建返回函式的函式..232
9.8 創建部分套用函式235
9.9 一個真實的例子239
第10 章集合.242
10.1 理解集合的層級結構243
10.2 選擇一個集合類..247
10.3 用一個集合方法解決一個問題252
10.4 理解集合的性能..258
10.5 在創建集合時聲明一個類型.260
10.6 理解可變變數與不可變集合.262
10.7 將Vector“變為”不可變序列.263
10.8 把ArrayBuffer 作為可變序列的第一選擇265
10.9 用foreach 遍歷一個集合..267
10.10 用for 循環遍歷一個集合269
10.11 使用zipWithIndex 或者zip 創建循環計數器272
10.12 疊代器的使用275
10.13 用for/yield 實現集合間的轉換276
10.14 用map 實現集合的變換.279
10.15 展平列表的列表與扁平化問題.281
10.16 map,flatten 和flatMap 的組合283
10.17 用filter 過濾一個集合285
10.18 從集合中提取元素序列287
10.19 序列的分割(groupBy 、partition 等)..289
10.20 用reduce 和fold 方法遍歷集合291
10.21 從序列中提取不重複的元素.296
10.22 合併序列集合297
10.23 用zip 將兩個序列集合合併為一對300
10.24 在集合上創建一個惰性視圖..301
10.25 利用Range 創建集合305
10.26 創建使用枚舉307
10.27 當需要一堆元素時使用元組..308
10.28 集合排序..310
10.29 通過mkString 將集合轉換成字元串313
第11 章列表、數組、映射、集及其他..315
11.1 創建和填充列表的不同方式.316
11.2 創建可變List.318
11.3 為List 添加元素319
11.4 從List(或者ListBuffer)中刪除元素..321
11.5 合併或連線列表..323
11.6 使用List 的懶惰版本,Stream..324
11.7 創建和更新數組的不同方式.326
11.8 創建大小可變的數組(ArrayBuffer).328
11.9 刪除Array 和ArrayBuffer 的元素..329
11.10 數組排序..331
11.11 創建多維數組.332
11.12 創建映射..334
11.13 選擇一種Map 實現336
11.14 為可變映射添加、更新或刪除元素338
11.15 為不可變映射添加、更新或刪除元素..340
11.16 訪問映射的值.342
11.17 遍歷映射..344
11.18 從映射中獲得所有的鍵或者值.345
11.19 反轉鍵值..346
11.20 測試映射中鍵/值的存在347
11.21 過濾映射..348
11.22 根據鍵或者值對映射排序350
11.23 找到映射中最大的鍵或者值..354
11.24 給集添加元素.355
11.25 從集中刪除元素357
11.26 使用可排序集.359
11.27 使用佇列..360
11.28 使用棧362
11.29 使用Range365
第12 章檔案和進程367
第13 章Actors 和並發..401
第14 章命令行任務440
第15 章Web 服務475
第16 章資料庫和持久化.510
第17 章與Java 互動.531
第18 章簡單構建工具(SBT)551
第19 章類型.589
第20 章慣用法.612
3.5 實現break 和continue..72
3.6 像三元運算符一樣使用if.77
3.7 像switch 語句一樣使用匹配表達式.78
3.8 一條case 語句匹配多個條件83
3.9 將匹配表達式的結果賦值給變數84
3.10 訪問匹配表達式預設case 的值84
3.11 在匹配表達式中使用模式匹配..85
3.12 在匹配表達式中使用Case 類..92
3.13 給Case 語句添加if 表達式(衛語句).93
3.14 使用匹配表達式替換isInstanceOf.94
3.15 在匹配表達式中使用List..95
3.16 用try/catch 匹配一個或者更多的異常97
3.17 在try/catch/finally 塊中使用變數前定義變數.98
3.18 創建自定義控制結構100
第4章類和屬性..103
4.1 創建一個主構造函式..104
4.2 控制構造函式欄位的可見性108
4.3 定義輔助構造函式 111
4.4 定義私有的主構造函式.115
4.5 設定構造函式參數的默認值116
4.6 覆寫默認的訪問和修改方法118
4.7 阻止生成getter 和setter 方法.121
4.8 將代碼塊或者函式賦給欄位123
4.9 設定未初始化的var 欄位類型..125
4.10 在繼承類時處理構造函式參數127
4.11 調用父類的構造函式129
4.12 何時使用抽象類..131
4.13 在抽象基類(或者特質) 里定義屬性..133
4.14 用Case 類生成模板代碼..137
4.15 定義一個equals 方法(對象的相等性)..141
4.16 創建內部類144
第5章方法147
5.1 控制方法作用域148
5.2 調用父類的方法152
5.3 方法參數默認值154
5.4 使用參數名..157
5.5 定義一個返回多個值(Tuples) 的方法..159
5.6 調用getter/setter 方法時不使用括弧.160
5.7 創建接受變參的方法..162
5.8 方法的異常聲明..164
5.9 支持鏈式調用編碼風格.166解決辦法167
第6章對象170
6.1 對象的強制轉換171
6.2 Java.class 的Scala 等價類173
6.3 確定對象所屬的類174
6.4 用Object 啟動一個套用..175
6.5 用object 創建單例..177
6.6 用伴生類創建靜態成員.178
6.7 將通用代碼放入包對象.180
6.8 不使用new 關鍵字創建對象實例183
6.9 在Scala 中用apply 方法實現工廠方法..187
第7章包和導入..190
7.1 花括弧風格的包記號法.191
7.2 引入一個或多個成員..192
7.3 在導入時重命名成員..194
7.4 在引入時隱藏一個類..195
7.5 使用靜態導入.196
7.6 在任意地方使用Import 語句.197
第8章特質200
8.1 特質用作接口.200
8.2 使用特質中的抽象欄位和實際欄位.203
8.3 像抽象類一樣使用特質.204
8.4 簡單混入特質.205
8.5 通過繼承來限制特質的使用範圍.206
8.6 限定特質只可用於指定類型的子類.208
8.7 保證特質只能被添加到只有一個特定方法的類型..210
8.8 為對象實例中添加特質.211
8.9 像特質一樣繼承一個Java 接口212
第9章函式式編程..214
9.1 使用函式字面量(匿名函式)..215
9.2 將函式作為變數216
9.3 定義接受簡單函式作為參數的方法.220
9.4 更多複雜的函式222
9.5 使用閉包226
9.6 使用部分套用函式231
9.7 創建返回函式的函式..232
9.8 創建部分套用函式235
9.9 一個真實的例子239
第10 章集合.242
10.1 理解集合的層級結構243
10.2 選擇一個集合類..247
10.3 用一個集合方法解決一個問題252
10.4 理解集合的性能..258
10.5 在創建集合時聲明一個類型.260
10.6 理解可變變數與不可變集合.262
10.7 將Vector“變為”不可變序列.263
10.8 把ArrayBuffer 作為可變序列的第一選擇265
10.9 用foreach 遍歷一個集合..267
10.10 用for 循環遍歷一個集合269
10.11 使用zipWithIndex 或者zip 創建循環計數器272
10.12 疊代器的使用275
10.13 用for/yield 實現集合間的轉換276
10.14 用map 實現集合的變換.279
10.15 展平列表的列表與扁平化問題.281
10.16 map,flatten 和flatMap 的組合283
10.17 用filter 過濾一個集合285
10.18 從集合中提取元素序列287
10.19 序列的分割(groupBy 、partition 等)..289
10.20 用reduce 和fold 方法遍歷集合291
10.21 從序列中提取不重複的元素.296
10.22 合併序列集合297
10.23 用zip 將兩個序列集合合併為一對300
10.24 在集合上創建一個惰性視圖..301
10.25 利用Range 創建集合305
10.26 創建使用枚舉307
10.27 當需要一堆元素時使用元組..308
10.28 集合排序..310
10.29 通過mkString 將集合轉換成字元串313
第11 章列表、數組、映射、集及其他..315
11.1 創建和填充列表的不同方式.316
11.2 創建可變List.318
11.3 為List 添加元素319
11.4 從List(或者ListBuffer)中刪除元素..321
11.5 合併或連線列表..323
11.6 使用List 的懶惰版本,Stream..324
11.7 創建和更新數組的不同方式.326
11.8 創建大小可變的數組(ArrayBuffer).328
11.9 刪除Array 和ArrayBuffer 的元素..329
11.10 數組排序..331
11.11 創建多維數組.332
11.12 創建映射..334
11.13 選擇一種Map 實現336
11.14 為可變映射添加、更新或刪除元素338
11.15 為不可變映射添加、更新或刪除元素..340
11.16 訪問映射的值.342
11.17 遍歷映射..344
11.18 從映射中獲得所有的鍵或者值.345
11.19 反轉鍵值..346
11.20 測試映射中鍵/值的存在347
11.21 過濾映射..348
11.22 根據鍵或者值對映射排序350
11.23 找到映射中最大的鍵或者值..354
11.24 給集添加元素.355
11.25 從集中刪除元素357
11.26 使用可排序集.359
11.27 使用佇列..360
11.28 使用棧362
11.29 使用Range365
第12 章檔案和進程367
第13 章Actors 和並發..401
第14 章命令行任務440
第15 章Web 服務475
第16 章資料庫和持久化.510
第17 章與Java 互動.531
第18 章簡單構建工具(SBT)551
第19 章類型.589
第20 章慣用法.612

相關詞條

熱門詞條

聯絡我們