实例介绍
【实例截图】
【核心代码】
Table of Contents About the Book ................................................................................................................. ix I. The Basics ...................................................................................................................... 1 1. Getting Started ........................................................................................................ 4 Chunks .............................................................................................................. 4 Some Lexical Conventions ................................................................................... 6 Global Variables ................................................................................................. 7 Types and Values ................................................................................................ 7 Nil ............................................................................................................ 8 Booleans .................................................................................................... 8 The Stand-Alone Interpreter .................................................................................. 9 2. Interlude: The Eight-Queen Puzzle ............................................................................ 12 3. Numbers ............................................................................................................... 15 Numerals .......................................................................................................... 15 Arithmetic Operators .......................................................................................... 16 Relational Operators .......................................................................................... 17 The Mathematical Library ................................................................................... 18 Random-number generator .......................................................................... 18 Rounding functions .................................................................................... 18 Representation Limits ......................................................................................... 19 Conversions ...................................................................................................... 21 Precedence ....................................................................................................... 22 Lua Before Integers ........................................................................................... 22 4. Strings ................................................................................................................. 24 Literal strings .................................................................................................... 24 Long strings ..................................................................................................... 25 Coercions ......................................................................................................... 26 The String Library ............................................................................................. 27 Unicode ........................................................................................................... 29 5. Tables .................................................................................................................. 33 Table Indices .................................................................................................... 33 Table Constructors ............................................................................................. 35 Arrays, Lists, and Sequences ............................................................................... 36 Table Traversal ................................................................................................. 38 Safe Navigation ................................................................................................. 38 The Table Library ............................................................................................. 39 6. Functions .............................................................................................................. 42 Multiple Results ................................................................................................ 43 Variadic Functions ............................................................................................. 45 The function table.unpack ............................................................................ 47 Proper Tail Calls ............................................................................................... 48 7. The External World ................................................................................................ 50 The Simple I/O Model ....................................................................................... 50 The Complete I/O Model .................................................................................... 53 Other Operations on Files ................................................................................... 54 Other System Calls ............................................................................................ 55 Running system commands ......................................................................... 55 8. Filling some Gaps .................................................................................................. 57 Local Variables and Blocks ................................................................................. 57 Control Structures .............................................................................................. 58 if then else ............................................................................................... 58 while ....................................................................................................... 59 Programming in Lua, Fourth Edition iv repeat ..................................................................................................... 59 Numerical for ........................................................................................... 60 Generic for .............................................................................................. 60 break, return, and goto ..................................................................................... 61 II. Real Programming ......................................................................................................... 65 9. Closures ............................................................................................................... 68 Functions as First-Class Values ............................................................................ 68 Non-Global Functions ........................................................................................ 69 Lexical Scoping ................................................................................................ 71 A Taste of Functional Programming ..................................................................... 74 10. Pattern Matching .................................................................................................. 77 The Pattern-Matching Functions ........................................................................... 77 The function string.find ...................................................................... 77 The function string.match .................................................................... 77 The function string.gsub ...................................................................... 78 The function string.gmatch .................................................................. 78 Patterns ............................................................................................................ 78 Captures ........................................................................................................... 82 Replacements .................................................................................................... 83 URL encoding .......................................................................................... 84 Tab expansion ........................................................................................... 86 Tricks of the Trade ............................................................................................ 86 11. Interlude: Most Frequent Words ............................................................................. 90 12. Date and Time ..................................................................................................... 92 The Function os.time ..................................................................................... 92 The Function os.date ..................................................................................... 93 Date–Time Manipulation .................................................................................... 95 13. Bits and Bytes ..................................................................................................... 97 Bitwise Operators .............................................................................................. 97 Unsigned Integers .............................................................................................. 97 Packing and Unpacking Binary Data ..................................................................... 99 Binary files ..................................................................................................... 101 14. Data Structures ................................................................................................... 104 Arrays ............................................................................................................ 104 Matrices and Multi-Dimensional Arrays ............................................................... 105 Linked Lists .................................................................................................... 107 Queues and Double-Ended Queues ..................................................................... 107 Reverse Tables ................................................................................................ 108 Sets and Bags ................................................................................................. 109 String Buffers .................................................................................................. 110 Graphs ........................................................................................................... 111 15. Data Files and Serialization .................................................................................. 114 Data Files ....................................................................................................... 114 Serialization .................................................................................................... 116 Saving tables without cycles ...................................................................... 118 Saving tables with cycles .......................................................................... 119 16. Compilation, Execution, and Errors ....................................................................... 122 Compilation .................................................................................................... 122 Precompiled Code ............................................................................................ 125 Errors ............................................................................................................. 126 Error Handling and Exceptions .......................................................................... 127 Error Messages and Tracebacks .......................................................................... 128 17. Modules and Packages ........................................................................................ 131 The Function require .................................................................................... 132 Programming in Lua, Fourth Edition v Renaming a module ................................................................................. 133 Path searching ......................................................................................... 133 Searchers ................................................................................................ 135 The Basic Approach for Writing Modules in Lua .................................................. 135 Submodules and Packages ................................................................................. 137 III. Lua-isms ................................................................................................................... 139 18. Iterators and the Generic for ................................................................................ 142 Iterators and Closures ....................................................................................... 142 The Semantics of the Generic for ....................................................................... 143 Stateless Iterators ............................................................................................. 145 Traversing Tables in Order ................................................................................ 146 True Iterators .................................................................................................. 147 19. Interlude: Markov Chain Algorithm ....................................................................... 149 20. Metatables and Metamethods ................................................................................ 152 Arithmetic Metamethods ................................................................................... 152 Relational Metamethods .................................................................................... 155 Library-Defined Metamethods ............................................................................ 155 Table-Access Metamethods ............................................................................... 156 The __index metamethod ....................................................................... 156 The __newindex metamethod ................................................................. 157 Tables with default values ......................................................................... 158 Tracking table accesses ............................................................................. 159 Read-only tables ...................................................................................... 160 21. Object-Oriented Programming .............................................................................. 162 Classes ........................................................................................................... 163 Inheritance ...................................................................................................... 165 Multiple Inheritance ......................................................................................... 166 Privacy ........................................................................................................... 168 The Single-Method Approach ............................................................................ 170 Dual Representation ......................................................................................... 170 22. The Environment ................................................................................................ 173 Global Variables with Dynamic Names ............................................................... 173 Global-Variable Declarations ............................................................................. 174 Non-Global Environments ................................................................................. 176 Using _ENV .................................................................................................... 177 Environments and Modules ............................................................................... 180 _ENV and load .............................................................................................. 181 23. Garbage ............................................................................................................ 183 Weak Tables ................................................................................................... 183 Memorize Functions ......................................................................................... 184 Object Attributes ............................................................................................. 185 Revisiting Tables with Default Values ................................................................. 186 Ephemeron Tables ........................................................................................... 187 Finalizers ........................................................................................................ 188 The Garbage Collector ...................................................................................... 190 Controlling the Pace of Collection ...................................................................... 191 24. Coroutines ......................................................................................................... 194 Coroutine Basics .............................................................................................. 194 Who Is the Boss? ............................................................................................ 196 Coroutines as Iterators ...................................................................................... 198 Event-Driven Programming ............................................................................... 200 25. Reflection .......................................................................................................... 205 Introspective Facilities ...................................................................................... 205 Accessing local variables .......................................................................... 207 Programming in Lua, Fourth Edition vi Accessing non-local variables .................................................................... 208 Accessing other coroutines ........................................................................ 209 Hooks ............................................................................................................ 210 Profiles .......................................................................................................... 211 Sandboxing ..................................................................................................... 212 26. Interlude: Multithreading with Coroutines ............................................................... 217 IV. The C API ................................................................................................................ 221 27. An Overview of the C API .................................................................................. 223 A First Example .............................................................................................. 223 The Stack ....................................................................................................... 225 Pushing elements ..................................................................................... 226 Querying elements ................................................................................... 227 Other stack operations .............................................................................. 229 Error Handling with the C API .......................................................................... 231 Error handling in application code .............................................................. 232 Error handling in library code .................................................................... 232 Memory Allocation .......................................................................................... 233 28. Extending Your Application ................................................................................. 236 The Basics ...................................................................................................... 236 Table Manipulation .......................................................................................... 237 Some short cuts ....................................................................................... 240 Calling Lua Functions ...................................................................................... 241 A Generic Call Function ................................................................................... 242 29. Calling C from Lua ............................................................................................ 247 C Functions .................................................................................................... 247 Continuations .................................................................................................. 249 C Modules ...................................................................................................... 251 30. Techniques for Writing C Functions ...................................................................... 254 Array Manipulation .......................................................................................... 254 String Manipulation .......................................................................................... 255 Storing State in C Functions .............................................................................. 258 The registry ............................................................................................ 258 Upvalues ................................................................................................ 260 Shared upvalues ....................................................................................... 263 31. User-Defined Types in C ..................................................................................... 265 Userdata ......................................................................................................... 265 Metatables ...................................................................................................... 268 Object-Oriented Access ..................................................................................... 270 Array Access .................................................................................................. 271 Light Userdata ................................................................................................. 272 32. Managing Resources ........................................................................................... 274 A Directory Iterator .......................................................................................... 274 An XML Parser ............................................................................................... 277 33. Threads and States .............................................................................................. 286 Multiple Threads ............................................................................................. 286 Lua States ...................................................................................................... 289 vii List of Figures 2.1. The eight-queen program .............................................................................................. 13 7.1. A program to sort a file ............................................................................................... 52 8.1. An example of a state machine with goto ........................................................................ 62 8.2. A maze game ............................................................................................................. 63 8.3. A strange (and invalid) use of a goto .............................................................................. 64 9.1. Union, intersection, and difference of regions ................................................................... 75 9.2. Drawing a region in a PBM file ..................................................................................... 75 11.1. Word-frequency program ............................................................................................ 91 12.1. Directives for function os.date ................................................................................. 94 13.1. Unsigned division ...................................................................................................... 98 13.2. Dumping the dump program ...................................................................................... 102 14.1. Multiplication of sparse matrices ................................................................................ 106 14.2. A double-ended queue .............................................................................................. 108 14.3. Reading a graph from a file ....................................................................................... 112 14.4. Finding a path between two nodes .............................................................................. 112 15.1. Quoting arbitrary literal strings ................................................................................... 117 15.2. Serializing tables without cycles ................................................................................. 118 15.3. Saving tables with cycles .......................................................................................... 120 16.1. Example of output from luac -l .............................................................................. 125 16.2. String repetition ....................................................................................................... 130 17.1. A homemade package.searchpath ...................................................................... 134 17.2. A simple module for complex numbers ........................................................................ 136 17.3. Module with export list ............................................................................................. 137 18.1. Iterator to traverse all words from the standard input ...................................................... 143 19.1. Auxiliary definitions for the Markov program ............................................................... 150 19.2. The Markov program ................................................................................................ 151 20.1. A simple module for sets .......................................................................................... 153 20.2. Tracking table accesses ............................................................................................. 159 21.1. the Account class .................................................................................................. 165 21.2. An implementation of multiple inheritance ................................................................... 167 21.3. Accounts using a dual representation ........................................................................... 171 22.1. The function setfield ........................................................................................... 174 22.2. Checking global-variable declaration ........................................................................... 176 23.1. Constant-function factory with memorization ................................................................ 187 23.2. Running a function at every GC cycle ......................................................................... 190 23.3. Finalizers and memory .............................................................................................. 192 24.1. Producer–consumer with filters ................................................................................... 198 24.2. A function to generate permutations ............................................................................ 199 24.3. An ugly implementation of the asynchronous I/O library ................................................. 201 24.4. Reversing a file in event-driven fashion ....................................................................... 202 24.5. Running synchronous code on top of the asynchronous library ......................................... 203 25.1. Getting the value of a variable ................................................................................... 208 25.2. Hook for counting number of calls .............................................................................. 211 25.3. Getting the name of a function ................................................................................... 212 25.4. A naive sandbox with hooks ...................................................................................... 213 25.5. Controlling memory use ............................................................................................ 214 25.6. Using hooks to bar calls to unauthorized functions ......................................................... 215 26.1. Function to download a Web page .............................................................................. 218 26.2. The dispatcher ......................................................................................................... 219 26.3. Dispatcher using select ......................................................................................... 220 27.1. A bare-bones stand-alone Lua interpreter ..................................................................... 224 Programming in Lua, Fourth Edition viii 27.2. Dumping the stack ................................................................................................... 229 27.3. Example of stack manipulation ................................................................................... 231 28.1. Getting user information from a configuration file ......................................................... 236 28.2. A particular getcolorfield implementation ............................................................ 238 28.3. Colors as strings or tables ......................................................................................... 240 28.4. Calling a Lua function from C ................................................................................... 242 28.5. A generic call function .............................................................................................. 243 28.6. Pushing arguments for the generic call function ............................................................. 244 28.7. Retrieving results for the generic call function ............................................................... 245 29.1. A function to read a directory .................................................................................... 249 29.2. Implementation of pcall with continuations ............................................................... 251 30.1. The function map in C ............................................................................................. 255 30.2. Splitting a string ...................................................................................................... 256 30.3. The function string.upper ................................................................................... 257 30.4. A simplified implementation for table.concat ........................................................ 258 30.5. An implementation of tuples ...................................................................................... 262 31.1. Manipulating a Boolean array .................................................................................... 266 31.2. Extra code for the Boolean array library ...................................................................... 267 31.3. New versions for setarray/getarray .................................................................... 269 31.4. New initialization code for the Bit Array library ............................................................ 272 32.1. The dir.open factory function ................................................................................ 275 32.2. Other functions for the dir library ............................................................................. 276 32.3. Function to create XML parser objects ........................................................................ 280 32.4. Function to parse an XML fragment ............................................................................ 281 32.5. Handler for character data ......................................................................................... 282 32.6. Handler for end elements .......................................................................................... 282 32.7. Handler for start elements ......................................................................................... 283 32.8. Method to close an XML parser ................................................................................. 283 32.9. Initialization code for the lxp library .......................................................................... 284 33.1. Function to search for a process waiting for a channel .................................................... 291 33.2. Function to add a process to a waiting list .................................................................... 291 33.3. Functions to send and receive messages ....................................................................... 292 33.4. Function to create new processes ................................................................................ 293 33.5. Body for new threads ............................................................................................... 294 33.6. Extra functions for the lproc module ........................................................................ 295 33.7. Registering libraries to be opened on demand ............................................................... 296
标签: Programming edit 2016 LUA Pro
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论