Lua是一种动态类型的语言。
Lua中有8种基础类型:nil(空) boolean(布尔) number(数字) string(字符串) userdata(自定义数据) function(函数) thread(线程) table(表)
函数type可根据一个值返回其类型名称。
1.nil(空)
主要功能是用于区别其他任何值,nil用于表示一种无效值(non-value)。
2.boolean(布尔)
boolean类型有两个可选值:false 和 ture。Lua将false和nil视为"假",将除此之外的值视为"真",Lua在条件测试中,将数字零和空字符串视为"真"。
3.number(数字)
number类型用于表示实数。
书写一个数字常量时,可以使用普通的写法,也可以使用科学计数发:
4、 0.4、 4.57e-3、 0.3e12
4.string(字符串)
lua的字符串是不可变的值。不能像在C语言中那样直接修改字符串的某个字符,而是根据修改要求来创建一个新的字符串。
a="one string'
b = string.gsub(a, "one", "anther") --修改字符串的一部分
print(a) --"on string"
print(b) --"anther string"
字符串需要以一对匹配的(单引号或双引号)来界定:
a = "a line"
b = 'anther line'
Lua字符串转义序列: \a 响铃 \b退格 \f提供表格 \n换行 \r回车 \t水平tab \v垂直tab \\反斜杠 \"双引号 \'单引号
Lua提供了运行时数字与字符串的自动转换。
print("10"+1) --11
print("10 + 1") -- 10 + 1
print("-5.3e-10"*"2") -- -1.06e-09
print(''hello" + 1) --error
".."字符串连接操作符。print(10 .. 20) -- 1020
tonumber将字符串转换成number
tostring将number转换成string
"#"字符串钱放置操作符"#"来获得该字符串的长度
5.table(表)
lua中table类型实现了"关联数组"。
在lua中,table既不是"值"也不是"变量",而是"对象"。不需要声明一个table,table的创建是通过"构造表达式"完成的,最简单的构造表达式就是{}。
例如:
table永远是"匿名的",一个持有table的变量与talbe自身之间没有固定的关联性。
a={}
a["x"] = 10;
b = a --b与a引用了同一个table
print(b["x"]) -- 10
b["x"] = 20
print(a["x"]) -- 20
a=nil --现在只有b还在引用table
b = nil --再也没有对table的引用了。
当一个程序再也没有对一个table的引用是,Lua的垃圾收集器最终会删除该table,并复用它的内存。
所有table可以用不同类型的索引来访问value,当需要容纳新条目时,table会自动增长。当table的某个元素没有初始化时,它的内容就为nil。
table.maxn返回一个table的最大正索引数
a = {}
a[10000] = 1
print(table.maxn(a)) -- 10000
6.function(函数)
lua中,函数是作为"第一类值"来看待的。表示函数可以存储在变量中,可以通过参数传递给其他函数,还可以作为其他函数的返回值。