Lua基础入门,适用有编程基础
适用于有编程基础,C、Java、JS、python等
下载系统对应的二进制文件,我这里下载的是Windows x64 可执行文件: lua-5.4.2_Win64_bin.zip
解压二进制文件后,配置全局环境变量即可运行,(建议重启)。
控制台输入 lua54 后(注:下载的是54版本),可以进入 lua 环境表示成功
Lua中默认是全局变量,其他文件可以直接使用,加 local 关键字的才是局部变量
-- 全局变量
a = 1
b = "哈哈"
-- 局部变量
local c = 3
在Lua中 没有被声明的变量都是 nil ,nil是一种类型,相当于其他语言中的 null
a,b,c = 1,2 -- lua赋值方式,a =1; b = 2; c = nil
print(c) -- nil
在Lua中支持16进制表示法和科学计数法
a = 0x11 -- 17
b = 2e10 -- 20000000000.0
在Lua中可以用单引号或双引号表示字符串,而且支持转义字符
也可以用两个中括号 [[]] 表示字符串,内容原封不动的输出,转义字符不会被修改
链接两个字符串是用两个点(…)
可以用tostring和tonumber转换字符串和数值,转换失败是nil
a = "abcd\njuan" -- 转义字符会被解析
b = 'ojyanskw'
c = [[sadasd
\niasd
owjads
asd\nw
awasd
]]
print(a..b) -- 连接字符串
常用方法
s = "abcdefg"
print(string.char(0x30)) -- ASCLL 生成字符
print(string.byte(s, 2)) -- 取出第二位的十进制表示
可以通过下标取值,但是在lua中,下标是从 1 开始的 ,也可以通过下标赋值
在Lua中,通过 # 获取 table 中的长度
a = {1, "ac", {}, function() end}
print(a[2]) -- ac
print(a[0]) -- nil
a[5] = 567
print(a[5]) -- 567
print(#a) -- 获取长度 5
常用方法
a = {1, "ac", {}, function() end}
table.insert(a, "d") -- 插入
table.insert(a, 2, "d") -- 在第二个位置插入
table.remove(a, 2) -- 移出第二个元素并返回
使用字符串当table下标
需要引号括起来取值,如果下标符合变量名称规范可以直接 .下标 取值
a = {
a = 1,
b = "asd",
c = {},
d = function() end,
[",:"] = 087, -- 不变量名称规范的下标
}
a["gif"] = "opiuy" -- 赋值
a.n = 123 -- 赋值
print(a["b"])
print(a.a) -- 取符合变量名称规范的下标的值
print(a[",:"])
print(a.gif)
print(a["n"])
在Lua中,不等于是 ~= 符号表示
在lua中,and or not 表示 与 或 非
a = true
b = false
print(1>2)
print(1<2)
print(1>=2)
print(1<=2)
print(1==2)
print(1~=2) -- 不等于
print(a and b) -- 第一个值为真返回第二个值,第一个值为假返回第一个值
print(a or b) -- 第一个值为假返回第二个值,第一个值为真返回第一个值
print(not a) -- 非
print(0 > 10 and "yes" or "no") -- no 相当于三元
注意: 在Lua中,只有 false 和 nil 代表假,数字0表示真
基本加减乘除都支持
print(10^5) -- 100000.0
print(1<<3) -- 8
print(8>>3) -- 1
函数声明可以用 xx = function() end 或者 function xx() end
函数默认返回 nil ,没有传参的参数也是 nil
function f(a, b,c)
print(a,b,c) -- 1, 2, nil
end
f(1,2)
函数可以返回多个值
function f(a, b)
return a, b + 2
end
i, j = f(1,2)
print(i, j) -- 1 4
它是table类型,所有的全局变量都在全局表中
a = 1
print(_G["a"])
print(_G["table"]["insert"])
if 1 > 4 then
print("1>5");
elseif 1 < 5 then
print("1<5");
else
print("no");
end
-- 初始值, 到达步, 步长递增(可省略,默认步长1)
for i = 1, 10, 2 do
print(i)
i = 1 -- 不会改变 i 值,表示 local i = 1
if i == 5 then break end -- 结束循环
end
泛型for循环
a = {"one", "two", "three"}
for i, v in ipairs(a) do
print(i, v)
end
-- i表示下标,v表示元素值
n = 10
while n>1 do
if n==5 then
break
end
print(n)
n = n-1 -- lua中,没有自增自减运算符
end
注:break 可以结束循环