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中,函数是作为"第一类值"来看待的。表示函数可以存储在变量中,可以通过参数传递给其他函数,还可以作为其他函数的返回值。