标签分类
当前位置:首页 > 程序设计电子书 > Lua电子书网盘下载
Lua程序设计 Lua程序设计
码小辫

码小辫 提供上传

资源
32
粉丝
44
喜欢
164
评论
17

    Lua程序设计 PDF 完整第4版

    Lua电子书
    • 发布时间:

    给大家带来的一篇关于Lua相关的电子书资源,介绍了关于Lua、程序设计方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小215.3 MB,罗伯拖?鲁萨利姆斯奇编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:9.3,更多相关的学习资源可以参阅 程序设计电子书、等栏目。

    Lua程序设计 PDF 下载

    下载地址:https://pan.baidu.com/s/1tYuhRbcA0NyHY81cYfNlf

    分享码:azb7

    Lua程序设计 第四版 PDF

    这书由Lua語言创作者亲身编写,对于Lua語言自身 循序渐进地从各个领域开展了详细和细腻的解读。全部与Lua語言相处的平均能从这书获益。这书由 Lua 語言创作者亲身编写,对于 Lua 語言自身 循序渐进地从各个领域开展了详细和细腻的解读。做为第 4 版,这书关键对于的是 Lua 5.3,它是这书编写时 Lua 語言的*版本号。创作者从語言使用人的视角来看,解读了語言基本、程序编写实际操作、高級特点及 C 語言 API 等四个方面的內容,具有 Lua 語言基本数据类型、I/O、控制结构等基本知识,也是对控制模块、闭包、元表、协程、持续、反射面、自然环境、垃圾分类回收、函数式编程、面向对象编程、C 語言 API 等高級特点的系统软件解读,也有对 Lua 5.3 中导入的整形、位运算、瞬表、持续等新作用的细腻表明。

    目录

    • 第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 多重继承(MultipleInheritance)    232
    • 21.4 私有性(Privacy)  235
    • 21.5 单方法对象(Single-methodObject)   237
    • 21.6 对偶表示(DualRepresentation)     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 记忆函数(MemorizeFunction)     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 自省机制(IntrospectiveFacility)    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

    上一篇:基于Hadoop的大数据分析和处理  下一篇:微信公众号运营:实战方法、案例与技巧

    展开 +

    收起 -

    Lua 相关电子书
    学习笔记
    网友NO.466915

    cocos2dx+lua实现橡皮擦功能

    游戏中刮刮乐是怎么实现的?做了一个小例子看了一下。 实现原理: 随着触摸点的移动,通过setBlendFunc函数设置部分区域的颜色混合(将上层图片透明度为0,底层我们想要的图片就显示出来) --橡皮擦功能测试local function initInfo() local scene = CCScene:create() local layer = CCLayer:create() scene:addChild(layer) --擦除后要显示的图片 local tupian = CCSprite:create(ROOT_RES .. "set/tip.png") tupian:setPosition(ccp(WinSizeWidth / 2, WinSizeHeight / 2)) layer:addChild(tupian) --涂层 local tu = CCSprite:create(ROOT_RES..'set/user/BG.png') tu:setPosition(ccp(WinSizeWidth/2,WinSizeHeight/2)) --layer:addChild(tu) --将图层遍历到texture,再将texture加入当前层 local ptex = CCRenderTexture:create(1280,720) ptex:setPosition(ccp(WinSizeWidth/2,WinSizeHeight/2)) layer:addChild(ptex) ptex:begin() tu:visit() ptex:endToLua() --橡皮擦CCDrawNode --point = CCDrawNode:create() --point:drawDot(ccp(0,0),10,ccc4f(0,0,0,0)) local point = CCSprite:create(ROOT_RES..'set/labBtn.png') layer:addChild(point) --[[local blend = ccBlendFunc() blend.src = 0 blend.dst = 1 tu:setBlendFunc(blend)--]] --local blend = tu:getBlendFunc() layer:registerScriptTouchHandler(function (eventType,x,y) if eventType == "began" then cclog("began") return true elseif eventType == "moved" then cclog("move") point:setPosition(x,y) local blend = ccBlendFunc() blend.src = 1 blend.dst = 0 point:setBlendFunc(blend) ptex:begin() point:v……

    网友NO.996896

    php使用lua+redis实现限流,计数器模式,令牌桶模式

    lua 优点 减少网络开销: 不使用 Lua 的代码需要向 Redis 发送多次请求, 而脚本只需一次即可, 减少网络传输; 原子操作: Redis 将整个脚本作为一个原子执行, 无需担心并发, 也就无需事务; 复用: 脚本会永久保存 Redis 中, 其他客户端可继续使用. 计数器模式: 利用lua脚本一次性完成处理达到原子性,通过INCR自增计数,判断是否达到限定值,达到限定值则返回限流,添加key过期时间应该范围过度 $lua = ' local i = redis.call("INCR", KEYS[1]) if i 10 then return "wait" else if i == 1 then redis.call("expire", KEYS[1], KEYS[2]) end return redis.call("get", KEYS[3]) end '; laravel 请求代码: Redis::eval($lua, 3, sprintf(RedisKey::API_LIMIT, $key, $callService['service']), 60, $cache_key); 令牌桶模式 每次请求在桶内拿取一个令牌,有令牌则通过,否则返回,并且按照算法一定的慢慢把令牌放入桶内 $lua = ' local data = redis.call("get", KEYS[2]) if data then local dataJson = cjson.decode(data) local newNum = math.min(KEYS[3], math.floor(((dataJson["limitVal"] - 1) + (KEYS[3]/KEYS[5]) * (KEYS[4] - dataJson["limitTime"])))) if newNum 0 then local paramsJson = cjson.encode({limitVal=newNum,limitTime=KEYS[4]}) redis.call("set", KEYS[2], paramsJson) return redis.call("get", KEYS[1]) end return "wait" end local paramsJson = cjson.encode({limitVal=KEYS[3],limitTime=KEYS[4]}) redis.call("set", KEYS[2], paramsJson) return redis.call("……

    网友NO.690982

    深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解

    介绍 本章,我们将讲解在ECMAScript向函数function传递参数的策略。 计算机科学里对这种策略一般称为“evaluation strategy”(大叔注:有的人说翻译成求值策略,有的人翻译成赋值策略,通看下面的内容,我觉得称为赋值策略更为恰当,anyway,标题还是写成大家容易理解的求值策略吧),例如在编程语言为求值或者计算表达式设置规则。向函数传递参数的策略是一个特殊的case。 http://dmitrysoshnikov.com/ecmascript/chapter-8-evaluation-strategy/ 写这篇文章的原因是因为论坛上有人要求准确解释一些传参的策略,我们这里给出了相应的定义,希望对大家有所帮助。 很多程序员都确信在JavaScript中(甚至其它一些语言),对象是按引用传参,而原始值类型按值传参,此外,很多文章都说到这个“事实”,但有多人真正理解这个术语,而且又有多少是正确的?我们本篇讲逐一讲解。 一般理论 需要注意到,在赋值理论里一般有2中赋值策略:严格——意思是说参数在进入程序之前是经过计算过的;非严格——意思是参数的计算是根据计算要求才去计算(也就是相当于延迟计算)。 然后,这里我们考虑基本的函数传参策略,从ECMAScript出发点来说是非常重要的。首先需要注意的是,在ECMAScript中(甚至其他的语如,C,JAVA,Python和Ruby中)都使用了严格的参……

    Copyright 2018-2019 xz577.com 码农之家

    版权责任说明