Lua
Lua 是解释型语言,即使用 lua.exe 对 lua 源代码进行解释执行
lua.exe 的源代码由纯 ANSI C 写成,并且轻量级,可以在任何平台(尤其是嵌入式平台)编译,这使得 Lua 不像 python 那样,一定要运行在主流操作系统上
同时你可以定制你的 lua,比如编译为 lib 或 dll。 在 Unix 下,我们建议把 Lua 库静态链入宿主程序,然后将符号导出用于动态链接。 在 Windows 下,我们建议把 Lua 库编译成一个 DLL 。
数据类型
1、nil 类似 None NULL,给变量赋值 nil,垃圾回收器会回收其内存
2、true 和 flase
3、浮点数(Lua 没有整数)
4、string (单引号或双引号均可)(用 .. 拼接字符串)
5、table 表,关联数组。
表的创建
表可以通过”构造表达式“来创建 {}是一种构造表达式
t1 = {}
t2 = {"apple", "pear"}遍历一个表,Lua 的索引从 1 开始
for k, v in pairs(t2) do
print(k .. ":" .. v)
end表,实际上是一个映射,一个 Map
当不指定键的时候,键默认是从 1 开始增长
同时,表没有大小,可以随意增长
表的键的类型也不固定
a = {}
a["key"] = "value"
key = 10
a[key] = 22当索引是字符串时,允许使用 . 进行访问
即 a.key 可以访问到 22
同时,表的变量名有些类似 Python,是一个指针
表可以直接赋值给另一个变量,它们共享同一个表实体
遍历创建与作用域
Lua 的遍历默认是全局的,不管它在不在函数里
只有写了 local 声明以后,作用域缩小到所在 Block
function joke()
c = 5 -- 全局变量
local d = 6 -- 局部变量
end
joke()
print(c,d) --> 5 nil多赋值
不允许:
a, b, c = 0 --这个只能给 a 赋值
a, b, c = 0, 1, 2 --合理换行符:
分号;可以显式的分割语句(尤其是一行内)
Lua 不强制写分号,换行就等于写分号了
表的进一步探讨
a={key=22,"key"="value"}上面这个是非法的,
Lua 你用{}建立表的时候,如果你不给定键的类型,那么键默认是一个字符串类型
你能够使用 . 来访问,即
a={key=22}
a={"key"=22}应该是一回事。
a={key=22} 能够用 a["key"] 访问
之所以之前那个成立,是因为 key 是一个数,本质上是和下面一样
a[10]=22函数定义和调用
t_g = {INT0 = 0}
t_p = {INT0 = 0}
function BitOr(params)
print(params.operateInt)
print(params.compareInt)
end
BitOr{operateInt=t_g.INT0, compareInt=t_p.INT0}函数调用的时候,可以现场构造一个参数表,这样可以不使用小括号,只使用大括号
params,这个叫什么无所谓,只不过是代表了一个表
operateInt,这个必须对应上,否则它找不到。传实参时,不写大概率是不行的,因为你不写,等价于传 1 2 3(双精度浮点数)作为键。
传参
基本类型(含字符串)传递值
表 传递引用
返回值
函数可以有返回值,使用 return 返回即可