深入理解 Scala 深入理解Scala

蘇瑞茨 (Joshua D.Suereth)

立即出貨 (庫存=1)

買這商品的人也買了...

商品描述

<內容介紹> 

Scala是一種多範式的編程語言,它既支持面向對象編程,也支持函數式編程的各種特性。
    蘇瑞茨著的《深入理解Scala》深入探討了Scala里幾個較為複雜的領域,包括類型系統的高階內容、隱式轉換、特質的組合技巧、集合、Actor、函數式編程的範疇論等,而且不是乾巴巴地講述語言和庫的概念。本書充滿各種實用的建議和最佳實踐,可以來幫助讀者學習怎樣把Scala里較少被掌握的部分應用到工作中。
    本書不是Scala的入門級教程,而是適合有經驗的Scala程序員向專家水平進階的參考讀物。本書適合想要瞭解Scala語言的底層機制和技術細節的讀者閱讀參考。

<章節目錄>

第1章  Scala——一種混合式編程語言
  1.1  Scala的設計哲學
  1.2  當函數式編程遇見面向對象
    1.2.1  重新發現函數式概念
    1.2.2  Google Collections中的函數式概念
  1.3  靜態類型和表達力
    1.3.1  換邊
    1.3.2  類型推斷
    1.3.3  拋開語法1
    1.3.4  隱式轉換概念早已有之
    1.3.5  使用Scala的implicit關鍵字
  1.4  與JVM的縫集成
    1.4.1  Scala調用Java
    1.4.2  Java調用Scala
    1.4.3  JVM的優越性
  1.5  總結
第2章  核心規則
  2.1  學習使用Scala交互模式(REPL)
    2.1.1  實驗驅動開發
    2.1.2  繞過積極(eaglerly)解析
    2.1.3  法表現的語言特性
  2.2  優先採用面向表達式編程
    2.2.1  方法和模式匹配
    2.2.2  可變性
  2.3  優先選擇不變性
    2.3.1  判等
    2.3.2  併發
  2.4  用None不用null
  2.5  多態場景下的判等
    2.5.1  例子:時間線庫
    2.5.2  多態判等實現
  2.6  總結
第3章  來點樣式—編碼規範
  3.1  避免照搬其他語言的編碼規範
  3.2  空懸的操作符和括號表達式
  3.3  使用有意義的命名
    3.3.1  命名時避免$符號
    3.3.2  使用命名和默認參數
  3.4  總是標記覆蓋(overriden)方法
  3.5  對期望的優化進行標註
  3.6  總結
第4章  面向對象編程
  4.1  限制在對象或特質的body里初始化邏輯的代碼
    4.1.1  延遲構造
  4.1  2多重繼承又來了
  4.2  為特質的抽象方法提供空實現
  4.3  組合可以包含繼承
    4.3.1  通過繼承組合成員
    4.3.2  經典構造器withatwist
    4.3.3  總結

  4.4  提升抽象接口為獨立特質
    4.4.1  和接口交互
    4.4.2  從歷史中吸取教訓
    4.4.3  結論
  4.5  public接口應當提供返回值
  4.6  總結
第5章  利用隱式轉換寫更有表達力
  5.1  介紹隱式轉換系統
    5.1.1  題外話:標識符
    5.1.2  作用域和綁定
    5.1.3  隱式解析
    5.1.4  通過類型參數獲得隱式作用域
    5.1.5  通過嵌套獲得隱式作用域
  5.2  隱式視圖:強化已存在的類
  5.3  隱式參數結合默認參數
  5.4  限制隱式系統的作用域
    5.4.1  為導入創建隱式轉換
    5.4.2  沒有導入稅(importtax)的隱式轉換
  5.5  總結1
第6章  類型系統
  6.1  類型
    6.1.1  類型和路徑
    6.1.2  type關鍵字
    6.1.3  結構化類型
  6.2  類型約束130
  6.3  類型參數和高階類型(Higher Kinded Types)
    6.3.1  類型參數約束
    6.3.2  高階類型
  6.4  型變(Variance)
  6.5  存在類型
  6.6  總結
第7章  隱式轉換和類型系統結合應用
  7.1  上下文邊界和視圖邊界
  7.2  用隱式轉換來捕捉類型
    7.2.1  捕獲類型用於運行時計算(capturing types for runtime evaluation)
    7.2.2  使用Manifest
    7.2.3  捕捉類型約束
    7.2.4  特定方法(Specialized method)
  7.3  使用類型類(type class)
    7.3.1  作為類型類的FileLike
    7.3.2  類型類的好處
  7.4  用類型系統實現條件執行
    7.4.1  異構類型List
    7.4.2  IndexedView
  7.5  總結
第8章  Scala集合庫
  8.1  使用正確的集合類型
    8.1.1  集合庫繼承層次
    8.1.2  Traversable
    8.1.3  Iterable

    8.1.4  Seq
    8.1.5  LinearSeq
    8.1.6  IndexedSeq
    8.1.7  Set
    8.1.8  Map
  8.2  不可變集合
    8.2.1  Vector
    8.2.2  List
    8.2.3  Stream(流)
  8.3  可變集合
    8.3.1  ArrayBuffer
    8.3.2  混入修改事件發布特質
    8.3.3  混入串行化特質
  8.4  用視圖和並行集合來改變計算策略
    8.4.1  視圖
    8.4.2  並行集合
  8.5  編寫能處理所有集合類型的方法
  8.6  總結
第9章  Actors
  9.1  使用Actor的時機
  9.2  使用有類型的、透明的引用
  9.3  把故障限制在故障區里
    9.3.1  發散搜集故障區
    9.3.2  通常的故障處理實踐
  9.4  利用排期區控制負載
  9.5  動態Actor拓撲
  9.6  總結
第10章  Scala和Java集成
  10.1  Scala/Java不匹配
    10.1.1  基礎類型自動打包的差異
    10.1.2  可見性的差異
    10.1.3  不可表達的語言特性
  10.2  謹慎使用隱式轉換
    10.2.1  對象標識和判等
    10.2.2  鏈式隱式轉換
  10.3  小心Java序列化
  10.4  註解你的註解
    10.4.1  註解目標
    10.4.2  Scala和靜態屬性
  10.5  總結
第11章  函數式編程
  11.1  電腦科學領域的範疇論
  11.2  函子(Functor),Monad及它們與範疇的關係
  11.3  咖喱化和可應用風格(Applicative style)
    11.3.1  咖喱化
    11.3.2  可應用風格
  11.4  用作工作流的單子
  11.5  總結