Kotlin編程 Kotlin Programming: The Big Nerd Ranch Guide ,2nd

[美]安德魯·貝利(Andrew Bailey) [美]戴維·格林哈爾希(David Greenhalgh) [美]喬希·斯基恩(Josh Skeen)著,高慧敏 呂勇

  • Kotlin編程-preview-1
  • Kotlin編程-preview-2
  • Kotlin編程-preview-3
Kotlin編程-preview-1

相關主題

商品描述

通過搭建書中的示例項目,可以循序漸進地掌握Kotlin 的用法。全書以循序漸進的方式精心編排章節,從基礎的變量與集合開始,逐漸深入到面向對象編程和函數式編程技術。首先使用IntelliJ IDEA搭建沙盒項目,引領讀者熟悉開發環境。接下來介紹Kotlin編程知識,從較為基礎的變量、常量、類型等講起,逐漸深入到繼承、對象和抽象類。最後是函數式編程、Kotlin與Java互操作、構建Android應用等較復雜的內容。書中章節通過搭建各種示例項目,在實踐中掌握Kotlin編程語言, 每章均有“深入學習”和“挑戰練習”環節,幫助鞏固所學知識。

目錄大綱

 

 

目錄

 

第一部分入門

 

第1章第一個Kotlin應用程序

 

1.1安裝IntelliJ IDEA

 

1.2第一個Kotlin項目

 

1.2.1創建第一個Kotlin文件

 

1.2.2運行Kotlin文件

 

1.2.3Kotlin/JVM代碼的編譯和執行

 

1.3Kotlin REPL

 

1.4好奇之處: 為什麽使用IntelliJ

 

1.5好奇之處: 面向JVM

 

1.6挑戰之處: REPL算術運算

 

第2章變量、常量和類型

 

2.1類型

 

2.2聲明變量

 

2.3Kotlin的內置類型

 

2.4只讀變量

 

2.5類型推斷

 

2.6編譯時常量

 

2.7檢查Kotlin字節碼

 

2.8好奇之處: Kotlin中的Java基本類型

 

2.9挑戰之處: hasSteed

 

2.10挑戰之處: The Unicorns Horn酒吧

 

2.11挑戰之處: 魔鏡

 

第二部分基本語法

 

第3章條件判斷

 

3.1if/else語句

 

3.2區間

 

3.3when表達式

 

3.4挑戰之處: 靈活使用區間

 

第4章函數

 

4.1將代碼提煉為函數

 

4.2函數剖析

 

4.3函數調用

 

4.4自定義函數

 

4.5默認實際參數

 

4.6單表達式函數

 

4.7Unit函數

 

4.8命名函數的實際參數

 

4.9好奇之處: Nothing類型

 

4.10好奇之處: Java中的文件級函數

 

4.11好奇之處: 函數重載

 

4.12好奇之處: 反引號中的函數名

 

第5章數值

 

5.1數值類型

 

5.2整數

 

5.3浮點數

 

5.4格式化雙精度數值

 

5.5在數值類型之間進行轉換

 

5.6好奇之處: 無符號數

 

5.7好奇之處: 位運算

 

第6章字符串

 

6.1字符串插值

 

6.2原始字符串

 

6.3從控制台讀取輸入

 

6.4將字符串轉換為數值

 

6.5正則表達式

 

6.6字符串操作

 

6.7字符串比較

 

6.8好奇之處: Unicode

 

第7章空安全和異常處理

 

7.1Nullability

 

7.2Kotlin的顯式Null類型

 

7.3編譯時和運行時

 

7.4空安全

 

7.4.1選項1: 使用if語句檢查null值

 

7.4.2選項2: 安全調用運算符

 

7.4.3選項3: nonnull斷言運算符

 

7.5異常

 

7.5.1拋出異常

 

7.5.2異常處理

 

7.5.3try/catch表達式

 

7.6前置條件

 

7.7好奇之處: 自定義異常

 

7.8好奇之處: 已檢查的異常和未檢查的異常

 

第三部分函數式編程和Collection

 

第8章Lambda表達式和函數類型

 

8.1NyetHack簡介

 

8.2匿名函數

 

8.3Lambda表達式

 

8.3.1函數類型

 

8.3.2隱式返回值

 

8.3.3函數的實際參數

 

8.3.4it標識符

 

8.3.5接收多個實際參數

 

8.4類型推斷支持

 

8.5更有效的Lambda

 

8.6定義一個以函數為參數的函數

 

8.7函數內聯

 

8.8Lambda和Kotlin標準庫

 

8.9有趣之處: 函數引用

 

8.10好奇之處: 捕獲Lambda

 

8.11挑戰之處: 新頭銜和新情緒

 

第9章List和Set

 

9.1List

 

9.1.1訪問List中的元素

 

9.1.2更改List中的內容

 

9.2重復迭代

 

9.3將文件讀入List中

 

9.4解構化

 

9.5Set

 

9.5.1創建一個Set

 

9.5.2向Set中添加元素

 

9.6while循環

 

9.7Collection之間的轉換

 

9.8有趣之處: Array類型

 

9.9好奇之處: 只讀的與不可變的

 

9.10好奇之處: break表達式

 

9.11好奇之處: Return標簽

 

9.12挑戰之處: 格式化的酒館菜單

 

9.13挑戰之處: 更高級的格式化酒館菜單

 

第10章Map

 

10.1創建一個Map

 

10.2訪問Map的值

 

10.3向Map中添加條目

 

10.4修改Map的值

 

10.5在List與Map之間進行轉換

 

10.6在Map中迭代

 

10.7挑戰之處: 復雜的訂單

 

第11章函數式編程基礎

 

11.1轉換數據

 

11.1.1map()函數

 

11.1.2associate()函數

 

11.1.3使用函數式編程進行解構

 

11.1.4flatMap()函數

 

11.1.5map()函數 vs flatMap()函數

 

11.2過濾數據

 

11.3組合函數

 

11.4為什麽選擇函數式編程

 

11.5Sequence

 

11.6好奇之處: 性能分析

 

11.7好奇之處: 聚合數據

 

11.7.1reduce()函數

 

11.7.2fold()函數

 

11.7.3SumBy()函數

 

11.8好奇之處: 關鍵字vararg

 

11.9好奇之處: Arrow.kt

 

11.10挑戰之處: 翻轉Map中的值

 

11.11挑戰之處: 找出最喜愛的商品

 

第12章作用域函數

 

12.1apply()函數

 

12.2let()函數

 

12.3run()函數

 

12.4with()函數

 

12.5also()函數

 

12.6takeIf()函數

 

12.7使用作用域函數

 

第四部分面向對象編程

 

第13章類

 

13.1定義類

 

13.2構建實例

 

13.3類函數

 

13.4可見性和封裝

 

13.5類屬性

 

13.6使用軟件包

 

13.7好奇之處: 詳細解析var和val屬性

 

13.8好奇之處: 防止可變性

 

13.9好奇之處: Package Private

 

第14章初始化

 

14.1構造函數

 

14.1.1主構造函數

 

14.1.2在主構造函數中定義屬性

 

14.1.3次構造函數

 

14.1.4默認實際參數

 

14.1.5命名實際參數

 

14.2初始化程序塊

 

14.3初始化順序

 

14.4延遲初始化

 

14.4.1後期初始化

 

14.4.2惰性初始化

 

14.5好奇之處: 初始化陷阱

 

14.6好奇之處: 屬性代理

 

14.7挑戰之處: 聖劍Excalibur之謎

 

第15章繼承

 

15.1定義room類

 

15.2創建一個子類

 

15.3類型檢查

 

15.4Kotlin的類型層次結構

 

15.4.1類型強制轉換

 

15.4.2智能強制轉換

 

15.5重構酒館

 

15.6好奇之處: Any類

 

15.7好奇之處: 安全的強制轉換運算符

 

第16章對象、數據類和枚舉類

 

16.1對象關鍵字

 

16.1.1對象聲明

 

16.1.2對象表達式

 

16.1.3伴生對象

 

16.2嵌套類

 

16.3數據類

 

16.3.1toString()函數

 

16.3.2equals()函數和hashCode()函數

 

16.3.3Copy()函數

 

16.3.4解構聲明

 

16.4枚舉類

 

16.5運算符重載

 

16.6探索NyetHack的世界

 

16.7好奇之處: 定義結構比較

 

16.8好奇之處: 代數數據類型

 

16.9好奇之處: 值類

 

16.10挑戰之處: 更多的命令

 

16.11挑戰之處: 實現一個游戲世界地圖

 

16.12挑戰之處: 敲響鐘聲

 

第17章接口和抽象類

 

17.1定義接口

 

17.2實現接口

 

17.3默認實現

 

17.4抽象類

 

17.5在NyetHack中進行戰鬥

 

17.6挑戰之處: 更多的怪物

 

第五部分高級Kotlin

 

第18章泛型

 

18.1定義泛型類型

 

18.2泛型函數

 

18.3泛型約束

 

18.4in和out

 

18.5添加Loot至NyetHack

 

18.6好奇之處: 關鍵字reified

 

第19章擴展

 

19.1定義擴展函數

 

19.1.1在超類上定義一個擴展函數

 

19.1.2通用擴展函數

 

19.1.3運算符擴展函數

 

19.2擴展屬性

 

19.3對Nullable類型的擴展

 

19.4擴展的實現原理

 

19.5擴展的可見性

 

19.6Kotlin標準庫中的擴展

 

19.7好奇之處: 帶有接收器的函數字面量

 

19.8挑戰之處: 框架擴展

 

第20章協程

 

20.1阻塞調用

 

20.2啟用協程

 

20.3協程構建器

 

20.4協程作用域

 

20.5結構化並發

 

20.6使用HTTP客戶端

 

20.7async和await

 

20.8好奇之處: 競態條件

 

20.9好奇之處: 服務器端Kotlin

 

20.10挑戰之處: 不允許取消

 

第21章流

 

21.1設置流

 

21.2MutableStateFlow

 

21.3流終止

 

21.4流轉換

 

21.5流中的錯誤處理

 

21.6好奇之處: SharedFlow

 

第22章通道

 

22.1使用通道對工作進行拆分

 

22.2發送至通道

 

22.3從通道中接收

 

22.4關閉通道

 

22.5加入jobs

 

22.6好奇之處: 其他的通道行為

 

22.6.1會合通道

 

22.6.2緩沖通道

 

22.6.3無限制通道

 

22.6.4合並通道

 

第六部分互操作和跨平臺應用

 

第23章Java互操作性

 

23.1與Java類進行交互

 

23.2互操作性和Nullity

 

23.3類型映射

 

23.4Getter、Setter和互操作性

 

23.5超越類

 

23.6異常和互操作性

 

23.7Java中的函數類型

 

第24章Kotlin跨平臺簡介

 

24.1什麽是Kotlin跨平臺

 

24.2規劃跨平臺項目

 

24.3第一個跨平臺項目

 

24.4定義Kotlin/JVM平臺

 

24.5定義共享代碼

 

24.6expect和actual

 

第25章Kotlin/Native

 

25.1聲明一個macOS平臺

 

25.2使用Kotlin編寫本機代碼

 

25.3啟動一個Kotlin/Native應用程序

 

25.4Kotlin/Native輸出

 

25.5好奇之處: Kotlin移動跨平臺

 

25.6好奇之處: 其他本機平臺

 

第26章Kotlin/JS

 

26.1宣佈對Kotlin/JS的支持

 

26.2與DOM進行交互

 

26.3關鍵字external

 

26.4執行原始的JavaScript

 

26.5Dynamic類型

 

26.6好奇之處: 前端框架

 

26.7挑戰之處: 貨幣兌換費

 

第27章後記

 

27.1展望

 

27.2宣傳

 

27.3致謝