nil
空,lua的变量默认为全局变量,如果想消除这个全局变量,就把该变量赋值为nil即可。
相当于NULL
boolean
布尔值,在判断语句中,lua中把false和nil看做假,其他都为真
print(type(true))--boolean
number
双精度浮点(double),lua中的数字都是该精度
print(type(10.4*3))--number
string
用双引号或者单引号表示的字符串,尽量用双引号,与其他语言保持统一
string1="This is string1"
stirng2="This is string2"
print("2"+3)--输出结果为5
print("2"+"3")--输出结果为5
print("a".."b")--输出结果为ab
print(123 .. 456)--输出结果为123456,注意一定要有空格
len="www.pornhub.com"
print(#len)--输出15,#+变量会输出长度
table
lua中的table是一个关联数组
--创建一个空表
local tbl1={}
--直接初始化表
local tbl2={"apple","pear","orange","grape"}
for k,v in pairs(tbl2) do
print(k,v)
end
输出为1 apple 2 pear 3 orange 4 grape
--关联数组
a={}
key=10;
a[key]=22;
for k,v in pairs(a) do
print(k .. ":" .. v)
end
--输出结果为22
键值对中的key和value可以是任意数据类型。可以是number,也可以是string
function
function即是函数
function factorial(n)
if n==0 then
return 1
else
return n*factorial(n-1)
end
end
print(factorial(5)) --输出结果为120
函数可以直接复制函数:
anotherFactorial=factorial
print(anotherFactorial(5))--输出结果同样为120
可以通过匿名函数的形式
function testFun(tab,fun)--tab是表的数据结构,fun是一个函数
for k,v in pairs(tab) do
print(fun(k,v))
end
end
--这里的function就是一个匿名函数,没有函数名,只有函数体
tab={key1="value1",key2="value2"}
testFun(tab,
function(key,val)
return key .. "=" .. val
end);
--[[输出
key1=value1
key2=value2]]
thread
线程,可以同时运行多个。
协程,coroutine,同时只能运行一个
userdata
自定义类型,可以将C或者C++的结构体或者指针放到lua中调用