Kotlin編程 Kotlin Programming: The Big Nerd Ranch Guide ,2nd
[美]安德魯·貝利(Andrew Bailey) [美]戴維·格林哈爾希(David Greenhalgh) [美]喬希·斯基恩(Josh Skeen)著,高慧敏 呂勇
- 出版商: 清華大學
- 出版日期: 2024-10-01
- 售價: $774
- 語言: 簡體中文
- ISBN: 7302673918
- ISBN-13: 9787302673910
-
相關分類:
JVM 語言
- 此書翻譯自: Kotlin Programming: The Big Nerd Ranch Guide ,2nd
下單後立即進貨 (約4週~6週)
相關主題
商品描述
通過搭建書中的示例項目,可以循序漸進地掌握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 Unicorns 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: nonnull斷言運算符
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致謝