Lua有八种基础类型:nil(空), boolean(布尔), number(数字), string(字符串), userdata(用户自定义),function(函数), thread(线程), and table(表)
2.1 nil
nil是一种类型,他只有nil一个值,相当于无效值。全局变量在第一次赋值前默认值就是nil,也就是说把nil赋值给全局变量等同于删除它
2.2 boolean
boolean类型有true和false两个值。Lua中任何值都可以表示一个条件,除了false和nil视为假外,其他都是真
2.3 number
number类型表示实数,Lua没有整数类型
2.4 string
Lua的字符串可以储存任意二进制数据,而且本身是不可变的值,要修改一个字符串,就要创建新的字符串
a = “one string”
b = string.gsub(a, “one”, “another”) – change string parts
print(a) –> one string
print(b) –> another string
另外还可以用一对匹配的双方括号来界定一个字符串(括号中间可以加等量的等号)
page = [[
An HTML Page
Lua
]]
write(page)
在进行算数运算的时候,Lua会尝试将字符串转换为数字
想要显示转换,要调用tonumber函数
另外在Lua5.1中,在字符串前面加”#”可以求字符串长度
2.5 table
在Lua中,table既不是值也不是变量,它们是对象。使用table来表示普通数组、集合的记录,和其他数据结构。Lua使用table表示包和对象
创建一个table
a = {}
x = “y”
a[x] = 10
print(a[x]) –> 10
print(a.x) –> nil
print(a.y) –> 10
2.6 function
在Lua中,函数是可以作为语句和表达式的。在Lua函数是”第一类值”。
2.7 userdata
用户数据类型允许任意C数据存储在Lua变量
2.8 thread
Lua不支持真正的多线程,因为ANSI C没有提供