出版時間:2012-10 出版社:電子工業(yè)出版社 作者:[美] C. S. 霍斯曼 頁數(shù):388 字數(shù):453000 譯者:高宇翔
Tag標簽:無
內(nèi)容概要
scala是一門以java虛擬機(jvm)為目標運行環(huán)境并將面向?qū)ο蠛秃瘮?shù)式編程語言的最佳特性結(jié)合在一起的編程語言。你可以使用scala編寫出更加精簡的程序,同時充分利用并發(fā)的威力。由于scala運行于jvm之上,因此它可以訪問任何java類庫并且與java框架進行互操作。本書從實用角度出發(fā),給出了一份快速的、基于代碼的入門指南。horstmann以“博客文章大小”的篇幅介紹了scala的概念,讓你可以快速地掌握和應用。實際上手的操作,清晰定義的能力層次,從初級到專家級,全程指導。
《快學scala》適合有一定的java編程經(jīng)驗、對scala感興趣,并希望盡快掌握scala核心概念和用法的開發(fā)者閱讀。
作者簡介
Cay S.
Horstmann是《Java核心技術(shù)》卷1和卷2第8版(Sun Microsystems出版社2008年出版)的主要作者,除此之外,他還著有其他十多本面向?qū)I(yè)程序員和計算機科學專業(yè)學生的書籍。他是San
Jose
書籍目錄
譯者序 iii 序xv 前言xvii 作者簡介xix 第1章 基礎(chǔ)a1 1 1.1 scala解釋器1 1.2 聲明值和變量 3 1.3 常用類型 4 1.4 算術(shù)和操作符重載 5 1.5 調(diào)用函數(shù)和方法 7 1.6 apply方法8 1.7 scaladoc9 練習11 第2章 控制結(jié)構(gòu)和函數(shù)a1 13 2.1 條件表達式14 2.2 語句終止 16 2.3 塊表達式和賦值 16 2.4 輸入和輸出17 2.5 循環(huán) 18 .2.6 高級for循環(huán)和for推導式19 2.7 函數(shù) 21 2.8 默認參數(shù)和帶名參數(shù) l1 22 2.9 變長參數(shù) l122 2.10 過程 23 2.11 懶值l1 24 2.12 異常 25 練習27 第3章 數(shù)組相關(guān)操作a1 29 3.1 定長數(shù)組 29 3.2 變長數(shù)組:數(shù)組緩沖 30 3.3 遍歷數(shù)組和數(shù)組緩沖 31 3.4 數(shù)組轉(zhuǎn)換 32 3.5 常用算法 34 3.6 解讀scaladoc 35 3.7 多維數(shù)組 37 3.8 與java的互操作 37 練習38 第4章 映射和元組a1 41 4.1 構(gòu)造映射 41 4.2 獲取映射中的值 42 4.3 更新映射中的值 43 4.4 迭代映射 44 4.5 已排序映射 44 4.6 與java的互操作 45 4.7 元組 45 4.8 拉鏈操作 46 練習47 第5章 類a1 51 5.1 簡單類和無參方法51 5.2 帶getter和setter的屬性 52 5.3 只帶getter的屬性55 5.4 對象私有字段 56 5.5 bean屬性l1 57 5.6 輔助構(gòu)造器 59 5.7 主構(gòu)造器 60 5.8 嵌套類l1 63 練習65 第6章 對象a1 69 6.1 單例對象 69 6.2 伴生對象 70 6.3 擴展類或特質(zhì)的對象 71 6.4 apply方法 72 6.5 應用程序?qū)ο?73 6.6 枚舉 74 練習75 第7章 包和引入a1 79 7.1 包 80 7.2 作用域規(guī)則 81 7.3 串聯(lián)式包語句 83 7.4 文件頂部標記法 83 7.5 包對象84 7.6 包可見性 85 7.7 引入 85 7.8 任何地方都可以聲明引入 86 7.9 重命名和隱藏方法87 7.10 隱式引入 87 練習88 第8章 繼承a1 91 8.1 擴展類91 8.2 重寫方法 92 8.3 類型檢查和轉(zhuǎn)換 93 8.4 受保護字段和方法94 8.5 超類的構(gòu)造 94 8.6 重寫字段 95 8.7 匿名子類 96 8.8 抽象類97 8.9 抽象字段 97 8.10 構(gòu)造順序和提前定義l398 8.11 scala繼承層級 100 8.12 對象相等性l1 101 練習 102 第9章 文件和正則表達式a1 105 9.1 讀取行 106 9.2 讀取字符106 9.3 讀取詞法單元和數(shù)字107 9.4 從url或其他源讀取108 9.5 讀取二進制文件 108 9.6 寫入文本文件 108 9.7 訪問目錄109 9.8 序列化 110 9.9 進程控制a2 111 9.10 正則表達式 113 9.11 正則表達式組 114 練習 114 第10章 特質(zhì)l1 117 10.1 為什么沒有多重繼承 117 10.2 當做接口使用的特質(zhì) 119 10.3 帶有具體實現(xiàn)的特質(zhì) 120 10.4 帶有特質(zhì)的對象121 10.5 疊加在一起的特質(zhì) 122 10.6 在特質(zhì)中重寫抽象方法124 10.7 當做富接口使用的特質(zhì)124 10.8 特質(zhì)中的具體字段 125 10.9 特質(zhì)中的抽象字段 126 10.10 特質(zhì)構(gòu)造順序 127 10.11 初始化特質(zhì)中的字段 129 10.12 擴展類的特質(zhì) 131 10.13 自身類型l2 132 10.14 背后發(fā)生了什么133 練習 135 第11章 操作符l1 139 11.1 標識符 139 11.2 中置操作符 140 11.3 一元操作符 141 11.4 賦值操作符 142 11.5 優(yōu)先級 142 11.6 結(jié)合性 143 11.7 apply和update方法144 11.8 提取器l2 145 11.9 帶單個參數(shù)或無參數(shù)的提取器l2 146 11.10 unapplyseq方法l2 147 練習 148 第12章 高階函數(shù)l1 151 12.1 作為值的函數(shù) 151 12.2 匿名函數(shù) 152 12.3 帶函數(shù)參數(shù)的函數(shù) 153 12.4 參數(shù)(類型)推斷 154 12.5 一些有用的高階函數(shù) 155 12.6 閉包156 12.7 sam轉(zhuǎn)換 157 12.8 柯里化 158 12.9 控制抽象 159 12.10 return表達式161 練習 162 第13章 集合a2 165 13.1 主要的集合特質(zhì)166 13.2 可變和不可變集合 167 13.3 序列168 13.4 列表169 13.5 可變列表 170 13.6 集 171 13.7 用于添加或去除元素的操作符 173 13.8 常用方法 175 13.9 將函數(shù)映射到集合 177 13.10 化簡、折疊和掃描a3178 13.11 拉鏈操作 181 13.12 迭代器 183 13.13 流a3 184 13.14 懶視圖 185 13.15 與java集合的互操作 186 13.16 線程安全的集合188 13.17 并行集合 188 練習 190 第14章 模式匹配和樣例類a2 193 14.1 更好的switch 194 14.2 守衛(wèi)195 14.3 模式中的變量 195 14.4 類型模式 196 14.5 匹配數(shù)組、列表和元組197 14.6 提取器 198 14.7 變量聲明中的模式 199 14.8 for表達式中的模式 199 14.9 樣例類 200 14.10 copy方法和帶名參數(shù) 201 14.11 case語句中的中置表示法 201 14.12 匹配嵌套結(jié)構(gòu) 202 14.13 樣例類是邪惡的嗎 203 14.14 密封類 204 14.15 模擬枚舉 205 14.16 option類型 205 14.17 偏函數(shù)l2 207 練習 207 第15章 注解a2 211 15.1 什么是注解 212 15.2 什么可以被注解212 15.3 注解參數(shù) 213 15.4 注解實現(xiàn) 214 15.5 針對java特性的注解 216 15.5.1 java修飾符 216 15.5.2 標記接口 216 15.5.3 受檢異常 217 15.5.4 變長參數(shù) 217 15.5.5 javabeans218 15.6 用于優(yōu)化的注解219 15.6.1 尾遞歸 219 15.6.2 跳轉(zhuǎn)表生成與內(nèi)聯(lián)220 15.6.3 可省略方法221 15.6.4 基本類型的特殊化222 15.7 用于錯誤和警告的注解223 練習 224 第16章 xml處理a2 227 16.1 xml字面量228 16.2 xml節(jié)點228 16.3 元素屬性 230 16.4 內(nèi)嵌表達式 231 16.5 在屬性中使用表達式 232 16.6 特殊節(jié)點類型 233 16.7 類xpath表達式 234 16.8 模式匹配 235 16.9 修改元素和屬性236 16.10 xml變換237 16.11 加載和保存 238 16.12 命名空間 241 練習 242 第17章 類型參數(shù)l2 245 17.1 泛型類 246 17.2 泛型函數(shù) 246 17.3 類型變量界定 246 17.4 視圖界定 248 17.5 上下文界定 249 17.6 manifest上下文界定249 17.7 多重界定 250 17.8 類型約束l3 250 17.9 型變252 17.10 協(xié)變和逆變點 253 17.11 對象不能泛型 255 17.12 類型通配符 256 練習 257 第18章 高級類型l2 259 18.1 單例類型 259 18.2 類型投影 261 18.3 路徑262 18.4 類型別名 263 18.5 結(jié)構(gòu)類型 264 18.6 復合類型 265 18.7 中置類型 266 18.8 存在類型 267 18.9 scala類型系統(tǒng) 268 18.10 自身類型 269 18.11 依賴注入 271 18.12 抽象類型l3 272 18.13 家族多態(tài) l3274 18.14 高等類型l3 278 練習 281 第19章 解析a3 285 19.1 文法286 19.2 組合解析器操作287 19.3 解析器結(jié)果變換289 19.4 丟棄詞法單元 291 19.5 生成解析樹 291 19.6 避免左遞歸 292 19.7 更多的組合子 294 19.8 避免回溯 296 19.9 記憶式解析器 297 19.10 解析器說到底是什么 297 19.11 正則解析器 299 19.12 基于詞法單元的解析器299 19.13 錯誤處理 302 練習 302 第20章 actor a3 305 20.1 創(chuàng)建和啟動actor 306 20.2 發(fā)送消息 307 20.3 接收消息 308 20.4 向其他actor發(fā)送消息309 20.5 消息通道 310 20.6 同步消息和future 311 20.7 共享線程 313 20.8 actor的生命周期 316 20.9 將多個actor鏈接在一起 317 20.10 actor的設(shè)計318 練習 320 第21章 隱式轉(zhuǎn)換和隱式參數(shù)l3 323 21.1 隱式轉(zhuǎn)換 324 21.2 利用隱式轉(zhuǎn)換豐富現(xiàn)有類庫的功能 324 21.3 引入隱式轉(zhuǎn)換 325 21.4 隱式轉(zhuǎn)換規(guī)則 326 21.5 隱式參數(shù) 328 21.6 利用隱式參數(shù)進行隱式轉(zhuǎn)換 329 21.7 上下文界定 330 21.8 類型證明 331 21.9 @implicitnotfound注解333 21.10 canbuildfrom解讀 333 練習 336 第22章 定界延續(xù)l3 339 22.1 捕獲并執(zhí)行延續(xù)340 22.2 “運算當中挖個洞” 341 22.3 reset和shift的控制流轉(zhuǎn) 342 22.4 reset表達式的值 343 22.5 reset和shift表達式的類型 344 22.6 cps注解 345 22.7 將遞歸訪問轉(zhuǎn)化為迭代347 22.8 撤銷控制反轉(zhuǎn) 349 22.9 cps變換 353 22.10 轉(zhuǎn)換嵌套的控制上下文356 練習 358 詞匯表 360 索引 367
章節(jié)摘錄
版權(quán)頁: 插圖: 你也可以在命令行中使用這些名稱: scalac —Xelide—below INFO myprog.scala 如果不指定—Xelide—below標志,那些被注解的值低于1000的方法會被省略,剩下SEVERE的方法和斷言,但會去掉所有警告。 說明:ALL和OFF級別可能會讓人感到困惑。注解@elide(ALL)表示方法總是被省略,而@elide(OFF)表示方法永不被省略。但—Xelide—below OFF的意思是要省略 所有方法,而—Xelide—below ALL的意思是什么都不要省略。這就是后來又增加了MAXIMUM和MINIMUM的原因。 Predef模塊塊定義了一個可被忽略的assert方法。例如,我們可以寫: def makeMap (keys: Seq(String), values: Seq(String)) ={assert (keys.length==values.length, """"lengths don't match”)} 如果我們用不匹配的兩個參數(shù)來調(diào)用該方法,則assert方法將拋出AssertionError,報錯消息為“assertion failed: lengths don't match”。 如果要禁用斷言,可以用—Xelide—below 2001或—Xelide—below MAXIMUM。注意在缺省情況下斷言不會被禁用。相比Java斷言,這是個受歡迎的改進。 注意:對被省略的方法調(diào)用,編譯器會幫我們替換成Unit對象。如果你用到了 被省略方法的返回值,則一個ClassCastException會被拋出。最好只對那些沒有返回值的方法使用@elidable注解。
編輯推薦
《快學Scala》適合有一定的Java編程經(jīng)驗、對Scala感興趣,并希望盡快掌握Scala核心概念和用法的開發(fā)者閱讀。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載