Lua 程序設計, 4/e (Programming in Lua, 4/e)
羅伯拖·魯薩利姆斯奇 (Roberto Ierusalimschy)
- 出版商: 電子工業
- 出版日期: 2018-07-01
- 售價: $534
- 貴賓價: 9.5 折 $507
- 語言: 簡體中文
- 頁數: 432
- 裝訂: 平裝
- ISBN: 7121338041
- ISBN-13: 9787121338045
- 
    相關分類:
    
      程式語言、Functional-programming
 
- 此書翻譯自: Programming in Lua, 4/e (Paperback)
立即出貨(限量) (庫存=3)
買這商品的人也買了...
- 
                
                   人月神話:軟體專案管理之道 (20 週年紀念版)(The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition, 2/e) 人月神話:軟體專案管理之道 (20 週年紀念版)(The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition, 2/e)$480$379
- 
                
                   深入淺出 SQL (Head First SQL) 深入淺出 SQL (Head First SQL)$880$695
- 
                
                   深入淺出軟體開發 (Head First Software Development) 深入淺出軟體開發 (Head First Software Development)$680$537
- 
                
                   Oracle DBA 手記:資料庫診斷案例與效能調校實戰 Oracle DBA 手記:資料庫診斷案例與效能調校實戰$580$458
- 
                
                   $1,615Cracking the Coding Interview : 189 Programming Questions and Solutions, 6/e (Paperback) $1,615Cracking the Coding Interview : 189 Programming Questions and Solutions, 6/e (Paperback)
- 
                
                   $356Go 語言實戰 (GO in Action) $356Go 語言實戰 (GO in Action)
- 
                
                   $414Lua 遊戲 AI 開發指南 (Learning Game AI Programming with Lua) $414Lua 遊戲 AI 開發指南 (Learning Game AI Programming with Lua)
- 
                
                   $294React 快速上手開發 $294React 快速上手開發
- 
                
                   $232Lua 設計與實現 $232Lua 設計與實現
- 
                
                   R語言的資料採礦導引 : 大數據時代的資料分析 R語言的資料採礦導引 : 大數據時代的資料分析$680$578
- 
                
                   深入淺出 Agile (Head First Agile: A Brain-Friendly Guide to Agile and the PMI-ACP Certification) 深入淺出 Agile (Head First Agile: A Brain-Friendly Guide to Agile and the PMI-ACP Certification)$780$616
- 
                
                   自己動手實現 Lua:虛擬機、編譯器和標準庫 自己動手實現 Lua:虛擬機、編譯器和標準庫$534$507
- 
                
                   AI 時代在網頁上資料視覺化:D3.js 實作寶典 AI 時代在網頁上資料視覺化:D3.js 實作寶典$540$459
- 
                
                   月亮般輕盈:用 Lua 成為指令稿語言大師 月亮般輕盈:用 Lua 成為指令稿語言大師$540$459
- 
                
                   $354Serverless 架構應用開發 Python 實現 $354Serverless 架構應用開發 Python 實現
- 
                
                   The Pragmatic Programmer: your journey to mastery, 2/e (20th Anniversary Edition) (Hardcover) The Pragmatic Programmer: your journey to mastery, 2/e (20th Anniversary Edition) (Hardcover)$2,030$1,989
- 
                
                   Spark 技術手冊|輕鬆寫意處理大數據 (Spark: The Definitive Guide|Big Data Processing Made Simple) Spark 技術手冊|輕鬆寫意處理大數據 (Spark: The Definitive Guide|Big Data Processing Made Simple)$880$695
- 
                
                   The Pragmatic Programmer 20週年紀念版 (The Pragmatic Programmer, 20th Anniversary Edition) The Pragmatic Programmer 20週年紀念版 (The Pragmatic Programmer, 20th Anniversary Edition)$680$537
- 
                
                   $714數據庫系統內幕 $714數據庫系統內幕
- 
                
                   System Design Interview – An Insider's Guide (Paperback) System Design Interview – An Insider's Guide (Paperback)$1,650$1,568
- 
                
                   PostgreSQL 修煉之道:從小工到專家, 2/e PostgreSQL 修煉之道:從小工到專家, 2/e$774$735
- 
                
                   $479讓工作化繁為簡: 用 Python 實現辦公自動化 $479讓工作化繁為簡: 用 Python 實現辦公自動化
- 
                
                   AWS Lambda 程式設計 : 用 Java 建立和部署無伺服器應用程式 (Programming AWS Lambda: Build and Deploy Serverless Applications with Java) AWS Lambda 程式設計 : 用 Java 建立和部署無伺服器應用程式 (Programming AWS Lambda: Build and Deploy Serverless Applications with Java)$580$458
- 
                
                   大話 AWS 雲端架構:雲端應用架構圖解輕鬆學, 2/e 大話 AWS 雲端架構:雲端應用架構圖解輕鬆學, 2/e$620$484
- 
                
                   Lua 解釋器構建:從虛擬機到編譯器 Lua 解釋器構建:從虛擬機到編譯器$594$564
商品描述
本書由 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

 
     
     
    
 
    
 
    
 
     
     
     
     
     
     
     
     
    
 
     
    
 
     
     
     
     
     
     
    
 
     
     
     
     
    