Lua基础
book
有电子书
install
#os kali 2017 sudo apt install lua5.1
on freebsd12
运行
evan@bsd-latop:~ % lua52 Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio > print("hello,world") hello,world 把脚本存成一个文件 evan@bsd-latop:~/test % cat hello.lua #!/usr/local/bin/lua52 print("Hello, World") evan@bsd-latop:~/test % chmod +x hello.lua evan@bsd-latop:~/test % ./hello.lua Hello, World
控制语句
./h.lua sum = 5050 evan@bsd-latop:~/test % cat h.lua #!/usr/local/bin/lua52 sum = 0 num = 1 while num <= 100 do sum = sum + num num = num + 1 end print("sum =",sum) if-else分支
函数
函数前面加上local就是局部函数
Table
Lua的下标不是从0开始的,是从1开始的
优点
除了游戏外,也适用于app api。 ngx+lua+redis 架构模式在高并发的情况下完胜 ngx+php-fpm+php。 再加上有ngx lua模块,ngx天然为Lua提供了web容器的接口,可以做更多容器的事情,例如: 防刷,身份验证等等
进阶 lua源码学习
阅读源代码的次序
首先、阅读外围的库是如何实现功能扩展的,然后、阅读 Lua 的具体实现。之后、可以开始了解 Lua VM 的实现。接下来就是分别理解函数调用、返回,string,metatable,table实现debug模块是一个额外的设施、最后是parse 等等编译相关的部分。垃圾收集将是最难的部分,可能会花掉最多的时间去理解细节
https://github.com/lichuang/Lua-5.1.4-codedump/tree/master
Lua源码分析 - 基础篇 - Lua源码的结构和架构图(01)
构建Lua解释器Part1:虚拟机的基础--Lua基本数据结构、栈和基于栈的C函数调用的设计与实现