Lua官网文档入口
http://www.lua.org/
document --> manual
一、基本数据类型
lua 中有八种基本数据型,分别是:
nil,boolean,number,string,function,userdata,thread 和 table。注意:lua 语句结束的分号可加可不加。
Lua 库函数 type返回一个描述给定类型数据的字符串,用法 type(val)
1.1 nil 表示空
--nil类型
a = nil;
print(type(a))
1.2 boolean
--boolean类型
print(type(true))
print(type(false))
1.3 number 只包括整型和浮点型
--number类型
print(type(100))
print(type(3.1415926))
1.4 string 单引号和双引号都表示string 注意:单个字符也是字符串
与C语言一样,可以用反斜杠 \ 对特殊字符进行转义 如:换行符:\n 制表符:\t
如果想原样输出字符串,使用[[]]:
--string类型
str1 = 'hello'
str2 = "world"
str3 = 'A'
print(type(str1))
print(type(str2))
print(type(str3))str4 = "a\nb\tcde"
print(str4)
str5 = [[a\nb\tcde]]
print(str5)
其余基本数据类型,我们在后面的文章再详细展开,这里可以先看下相关类型的打印。
--[[3. userdata 自定义数据类型4. thread 协程5. table 表在 lua 中只有false 和 nil 才表示假, 0 和 空串表示真!
]]--function 类型
print(type(type)) --table 类型
print(type({})) val1 = 0;
if val1 thenprint("val1 = 0 is true");
elseprint("val1 = 0 is false");
endval2 = "";
if val2 thenprint("val2 is true");
elseprint("val2 is false");
end
运行结果:
1.5 function
function 在lua中是一个基本数据类型,是第一类值。格式如下:
function funcName(args...)...
end
function的参数和返回值很灵活。
代码示例:
function func1()print("func1 call")
endfunc1()function func2(a, b, c)print(a, b, c)
endfunc2("lwang", 25, "beijing")-- 可变参函数
function func3(...)end-- 将匿名函数赋值给变量
add = function(a, b)return a+b
end
print(add(10, 20)) --作为其他函数的参数
function func4(funcName, a, b)return funcName(a,b)
endlocal res = func4(add, 11, 22)
print(res)
运行结果:
1.6 table
function 在lua中是一个基本数据类型,是第一类值。格式如下:
# 第一种,类似于map
tableName={k=v,
}
# 第二种,类似于数组,下标从1开始
tableName = {v1, v2, v3, ....}
代码示例:
-- table 类型,类似于map,理论上处理nil都可以所谓key
stuInfo = {id = 1,name = "zhangsan",age = 18,sex = true
};-- 遍历table中的元素
for k, v in pairs(stuInfo) doprint(k,v)
end
print("==============")
-- 只打印value
for _, v in pairs(stuInfo) doprint(v)
end-- 添加元素
stuInfo.country = "China"
stuInfo["habbie"] = "basketball"
print(stuInfo.country)
print(stuInfo.habbie)-- 删除元素,让索引对应的value指向nil即可
stuInfo.age = nil
print(stuInfo.age)print("======== Array test ========")
nums = {1, 3, 5, 7, "lwang", "panda", true}
-- for k, v in pairs(nums) do
-- print(k, v)
-- end-- 增加元素
nums[10] = 10
nums[100] = 100
for k, v in pairs(nums) doprint(k, v)
end-- 修改指定下标的元素值
nums[1] = "darren"
for k, v in pairs(nums) doprint(k, v)
end
运行结果: