Lua 程序設計, 4/e (Programming in Lua, 4/e)
羅伯拖·魯薩利姆斯奇 (Roberto Ierusalimschy)
- 出版商: 電子工業
- 出版日期: 2018-07-01
- 售價: $534
- 貴賓價: 9.5 折 $507
- 語言: 簡體中文
- 頁數: 432
- 裝訂: 平裝
- ISBN: 7121338041
- ISBN-13: 9787121338045
-
相關分類:
程式語言
- 此書翻譯自: Programming in Lua, 4/e (Paperback)
立即出貨(限量) (庫存=6)
買這商品的人也買了...
-
$480$379 -
$880$695 -
$680$578 -
$580$458 -
$1,615Cracking the Coding Interview : 189 Programming Questions and Solutions, 6/e (Paperback)
-
$356Go 語言實戰 (GO in Action)
-
$352Lua 遊戲 AI 開發指南 (Learning Game AI Programming with Lua)
-
$250React快速上手開發
-
$250Lua 設計與實現
-
$680$537 -
$780$616 -
$534$507 -
$540$459 -
$540$459 -
$301Serverless 架構應用開發 Python 實現
-
$1,995The Pragmatic Programmer: your journey to mastery, 2/e (20th Anniversary Edition) (Hardcover)
-
$880$695 -
$680$537 -
$607數據庫系統內幕
-
$1,600$1,520 -
$774$735 -
$479$455 -
$580$458 -
$620$484 -
$505Lua 解釋器構建:從虛擬機到編譯器
相關主題
商品描述
本書由 Lua 語言作者親自撰寫,針對 Lua 語言本身由淺入深地從各個方面進行了完整和細致的講解。作為第 4 版,本書主要針對的是 Lua 5.3,這是本書撰寫時 Lua 語言的最新版本。作者從語言使用者的角度出發,講解了語言基礎、編程實操、高級特性及 C 語言 API 等四個方面的內容,既有 Lua 語言基本數據類型、輸入輸出、控制結構等基礎知識,也有對模塊、閉包、元表、協程、延續、反射、環境、垃圾回收、函數式編程、面向對象編程、C 語言 API 等高級特性的系統講解,還有對 Lua 5.3 中引入的整型、位運算、瞬表、延續等新功能的細致說明。
作者簡介
作者:(巴西)Roberto Ierusalimschy(羅伯拖?魯薩利姆斯奇)譯者:梅隆魁
Roberto Ierusalimschy是Lua語言的首席架構師,從1993年Lua語言誕生起即進行Lua語言的開發工作,目前是巴西PUC-Rio(the Pontifical Catholic University of Rio de Janeiro)大學計算機科學專業的一名助理教授,主要從事編程語言的設計和實現工作。
梅隆魁,2013.4至今就職於中國民生銀行總行信息科技部,擅長於Java企業級開發、嵌入式系統/軟硬件、安卓逆向等方向,同時,對新技術也一直保有熱情。
目錄大綱
第1部分語言基礎1
1 Lua語言入門2
1.1程序段. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2一些詞法規範. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3全局變量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4類型和值. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.1 nil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.2 Boolean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5獨立解釋器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.6練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2小插曲:八皇后問題13
2.1練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3數值17
3.1數值常量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2算術運算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3關係運算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4數學庫. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4.1隨機數發生器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4.2取整函數. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.5表示範圍. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.6慣例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.7運算符優先級. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.8兼容性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.9練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4字符串30
4.1字符串常量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2長字符串/多行字符串. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3強制類型轉換. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.4字符串標準庫. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.5 Unicode編碼. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.6練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5表43
5.1表索引. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2表構造器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.3數組、列表和序列. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.4遍歷表. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.5安全訪問. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.6表標準庫. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.7練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6函數56
6.1多返回值. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6.2可變長參數函數. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.3函數table.unpack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.4正確的尾調用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.5練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7輸入輸出68
7.1簡單I/O模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7.2完整I/O模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.3其他文件操作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.4其他系統調用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
7.4.1運行系統命令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
7.5練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8補充知識78
8.1局部變量和代碼塊. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.2控制結構. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.2.1 if then else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.2.2 while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.2.3 repeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
8.2.4數值型for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
8.2.5泛型for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
8.3 break、return和goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.4練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
第2部分編程實操90
9閉包91
9.1函數是第一類值. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
9.2非全局函數. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
9.3詞法定界. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
9.4小試函數式編程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
9.5練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
10模式匹配105
10.1模式匹配的相關函數. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
10.1.1函數string.find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
10.1.2函數string.match . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
10.1.3函數string.gsub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
10.1.4函數string.gmatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
10.2模式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
10.3捕獲. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
10.4替換. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
10.4.1 URL編碼. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
10.4.2製表符展開. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
10.5訣竅. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
10.6練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
11小插曲:出現頻率最高的單詞124
11.1練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
12日期和時間128
12.1函數os.time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
12.2函數os.date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
12.3日期和時間處理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
12.4練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
13位和字節135
13.1位運算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
13.2無符號整型數. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
13.3打包和解包二進制數據. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
13.4二進製文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
13.5練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
14數據結構145
14.1數組. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
14.2矩陣及多維數組. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
14.3鍊錶. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
14.4隊列及雙端隊列. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
14.5反向表. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
14.6集合與包. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
14.7字符串緩衝區. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
14.8圖形. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
14.9練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
15數據文件和序列化159
15.1數據文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
15.2序列化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
15.2.1保存不帶循環的表. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
15.2.2保存帶有循環的表. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
15.3練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
16編譯、執行和錯誤171
16.1編譯. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
16.2預編譯的代碼. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
16.3錯誤. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
16.4錯誤處理和異常. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
16.5錯誤信息和棧回溯. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
16.6練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
17模塊和包184
17.1函數require . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
17.1.1模塊重命名. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
17.1.2搜索路徑. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
17.1.3搜索器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
17.2 Lua語言中編寫模塊的基本方法. . . . . . . . . . . . . . . . . . . . . . . . . . . 190
17.3子模塊和包. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
17.4練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
第3部分語言特性196
18迭代器和泛型for 197
18.1迭代器和閉包. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
18.2泛型for的語法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
18.3無狀態迭代器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
18.4按順序遍歷表. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
18.5迭代器的真實含義. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
18.6練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
19小插曲:馬爾可夫鏈算法208
19.1練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
20元表和元方法212
20.1算術運算相關的元方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
20.2關係運算相關的元方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
20.3庫定義相關的元方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
20.4表相關的元方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
20.4.1 __index元方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
20.4.2 __newindex元方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
20.4.3具有默認值的表. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
20.4.4跟踪對錶的訪問. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
20.4.5只讀的表. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
20.5練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
21面向對象(Object-Oriented)編程226
21.1類(Class) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
21.2繼承(Inheritance) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
21.3多重繼承(Multiple Inheritance) . . . . . . . . . . . . . . . . . . . . . . . . . . 232
21.4私有性(Privacy) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
21.5單方法對象(Single-method Object) . . . . . . . . . . . . . . . . . . . . . . . . 237
21.6對偶表示( Dual Representation) . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
21.7練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
22環境(Environment ) 241
22.1具有動態名稱的全局變量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
22.2全局變量的聲明. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
22.3非全局環境. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
22.4使用_ENV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
22.5環境和模塊. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
22.6 _ENV和load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
22.7練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
23垃圾收集255
23.1弱引用表. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
23.2記憶函數(Memorize Function) . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
23.3對象屬性(Object Attribute) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
23.4回顧具有默認值的表. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
23.5瞬表(Ephemeron Table) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
23.6析構器(Finalizer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
23.7垃圾收集器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
23.8控制垃圾收集的步長(Pace) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
23.9練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
24協程(Coroutine) 270
24.1協程基礎. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
24.2哪個協程佔據主循環. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
24.3將協程用作迭代器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
24.4事件驅動式編程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
24.5練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
25反射(Reflection) 285
25.1自省機制(Introspective Facility) . . . . . . . . . . . . . . . . . . . . . . . . . . 286
25.1.1訪問局部變量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
25.1.2訪問非局部變量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
25.1.3訪問其他協程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
25.2鉤子(Hook) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
25.3調優(Profile) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
25.4沙盒(Sandbox) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
25.5練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
26小插曲:使用協程實現多線程301
26.1練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
第4部分C語言API 307
27 C語言API總覽308
27.1第一個示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
27.2棧. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
27.2.1壓入元素. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
27.2.2查詢元素. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
27.2.3其他棧操作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
27.3使用C API進行錯誤處理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
27.3.1處理應用代碼中的錯誤. . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
27.3.2處理庫代碼中的錯誤. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
27.4內存分配. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
27.5練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
28擴展應用325
28.1基礎知識. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
28.2操作表. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
28.2 .1一些簡便方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
28.3調用Lua函數. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
28.4一個通用的調用函數. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
28.5練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
29在Lua中調用C語言339
29.1 C函數. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
29.2延續(Continuation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
29.3 C模塊. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
29.4練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
30編寫C函數的技巧349
30.1數組操作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
30.2字符串操作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
30.3在C函數中保存狀態. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
30.3.1註冊表. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
30.3.2上值. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
30.3.3共享的上值(Shared upvalue) . . . . . . . . . . . . . . . . . . . . . . . . 361
30.4練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
31 C語言中的用戶自定義類型363
31.1用戶數據(Userdata) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
31.2元表(Metatable) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
31.3面向對象訪問. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
31.4數組訪問. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
31.5輕量級用戶數據. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
31.6練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
32管理資源376
32.1目錄迭代器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
32.2 XML解析器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
32.3練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
33線程和狀態392
33.1多線程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
33.2 Lua狀態. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
33.3練習. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406