Lua类型
#lua 变量类型
- nil (空类型)
- number (数值)
- boolean (布尔)
- string (字符串)
- table (表)
- userdata (自定义类型)
- function (函数)
- thread (线程)
1. nil
lua中nil表示无效的值。一些未初始化的变量也会被默认赋值为nil。
2. number
lua中没有整数类型。number用于表示双精度浮点类型(double)。
3. boolean
boolean 有两个可选值 true和false。但是要注意的是,在lua中 false和 nil 表示假,而其余都表示真,与c语言不同。
local a = 0; if a then print("test lua booblean") end --输出:test lua booblean
4. string
lua中的字符串是一种字符串序列,不是类似于c语言中的字符数组。当字符串中存在多行的时候可以使用[[]]符号来表示。在[[]]中的转义字符不会被解读。在Lua中连接两个字符串,可以使用操作符“..”(两个点)。如果其任意一个操作数是数字的话,Lua会将这个数字转换成一个字符串。在Lua中,字符串是不可变的值,连接操作符只会创建一个新字符串,而不会对其原操作数进行任何修改。
local html = [[ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>账号登录</title> </head> </html> ]] print(html);
5. table
table类型是一种关联数组,可以使用整数来索引也可以使用字符串来索引。table使用{}来进行初始化,初始化完成后赋值给变量,是将自己的引用存储在变量中。
-------table的两种构造方式 --1.最简单的构造式就是一个空构造式{},用于创建一个空table。构造式还可以用于初始化数组,数组的下标从1开始 local name = {"Anna", "Lucy", "Andy", "Lucas"} print(name[1]) ----Anna
--2.Lua还提供了一种特殊的语法用于初始化table local num = {x=10, y=20} ---等价于 local num = {["x"] = 10, ["y"] = 20} print(num.x) -------10; print(num["x"]); ------10;
local a = {}; a.x = 10; local b = a; print(b.x); --------10 b.x = 20; print(a["x"]); --------20
local a = { a=1, b=2, c=3, d=4, e } local b = { 1, 2, 3, 4, 5 } print(a.a, a.b, a.c, a.d, a.e); --------1 2 3 4 nil print(b[1], b[2], b[3], b[4], b[5]); --------1 2 3 4 5
-------------table.getn(b) 等价于#b 但是table.getn 和 # 只能表示key必须是有序的,索引是从1开始的table -------------a不是有序的table, b是有序的table。有序的table可以使用 table[n](n是整数来表示) table.getn(b) --------5 table.getn(a) --------0
6. function
在Lua中,函数被当做值来对待。这表示函数可以存储在变量中,可以通过参数传递给其它函数,还可以作为其它函数的返回值。