lua 几大数据类型
nil 只有值nil属于该类,表示一个无效值,相当于false
boolean 包含两个之 true和false
number 双精度类型的实际点数
string 字符串,单引号或双引号表示
function 函数的定义头
userdata 表示任意储存在变量的C数据结构
thread 表示执行的独立线路,用于执行协同程序。
table lua中的表(table)其实是一个“关联数组”,数组的索引可以是数字,字符或表类型,在lua里,table的创建是通过“构造表达式”来完成,最简单结构表达式是{},用于创建一个空表。
a = "gg" string 定义
a=10.4 number
a = nil nil 相当于空,输出未赋值的变量就会输出nil 赋值错误也是nil 如 a = eewq print(a) 输出也是nil
for 的基本利用和nil的删除功能
a = {key1 = "val1",key2 = "val2", "val3"}
for k,v in pairs(a) do
print(k .. "-" .. v)
end
输出1-val3 key1-val1 key2-val2
就可以把key1删除。
lua 作比较时应该加双引号“”
print(a) == "nil" 这样做比较才对。
nil false都是假 true 是真
if false or nil then
print("至少有一个是true")
else
print("false 和 nil 都是false!")
end
输出:false 和 nil 都为 false!
Lua 默认只有一种 number 类型 -- double(双精度)类型(默认类型可以修改 luaconf.h 里的定义),以下几种写法都被看作是 number 类型:print(type(2))
print(type(2.2))
print(type(0.2))
print(type(2e+1))
print(type(0.2e-1))
print(type(7.8263692594256e-06))
lua 里string可以双引号定义,比较长的也可用[[]]来i当以带格式
一对数字计算,如果带双引号会被转化为数字直接运算,并且 如说两个变量进行拼接要用 a..b的形式进行拼接。
lua使用 #变量 的形式计算字符串的长度
local 局部变量前缀。
a = {}
a["key"] = "value"
key = 10
a[key] = 22
a[key] = a[key] + 11
for k, v in pairs(a) do
print(k .. " : " .. v)
end
输出结果
key : value
10 : 33
同其它语言不通lua的下标是从1开始的。
a = {'a','b'}
for k ,v in pairs(a) do
print(k)
end
输出 1 2
table 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil。
lua的function(函数)
> function gg(a)
>> if a == 0 then
>> return 1
>> else
>> return a * gg(a-1)
>> end
>> end
> print(gg(5))
b = gg
print(b(5))
也可以使用匿名函数形式传参
function gg(tab,fun)
for k,v in pairs(tab) do
print(fun(k,v));
end
end
tab = {key1="val1",key2="val2"}
testFun(tab,
function(key,val)
return key .. "=" ..val;
end
);
thread(线程) userdata(自定义类型)