Lua简单入门笔记
目录
- 1.变量
- 2.函数
- 3.table
- 4.全局表
- 5.bool 型
- 6.分支判断
- 7.循环语句
1. 变量
- 简单变量
a = 5 -- 全局变量(默认)
local b = 5 -- 局部变量
print(a, b) -- 可以一次打印多个变量
print(c) -- 未声明过的值,都是 nil
----------------------------------------------
a, b = 1, 2 -- 多变量赋值
a, b, c = 1, 2 -- 值少于变量,此时c未被赋值,即 C = nil
- number 变量
a = 0x11 -- 支持 16 进制
b = 2e10 -- 支持科学计数法
c = a * b -- 支持各种运算符
d = 10^5 -- 这里表示 10 的 5 次方,不是异或
- string 类型
a = "abcdadqdwq\nabc" -- 支持单引号、双引号、转义字符
b = 'awdawdwadwad'
c = [[
qwert\nyui
asdfgh
zxcvb
]] -- 双中括号内的内容会保持原样的打印,转义字符和注释也会无视
d = a..b -- 将 a 和 b 串连接起来(用 .. 连接)
e = tostring(100) -- 将数字转为字符串
f = tonumber("12") -- 将字符串转为数值
g = tonumber("asd") -- 上述字符串无法转为数字,则 g = nil
print(#a) -- 通过 '#' 可以获取字符串的长度
s = string.char(0x30, 0x31, 0x32) -- string.char()方法将参数变为字符
n = string.byte(s, 2) -- 取出 s 的第二位,返回的形式是十进制
2. 函数
- 函数声明
function 函数名(函数参数) -- 也可以写成: 函数名 = function(函数参数)
-- body
end -- 以end表示函数结束
-----------------------------------------------------------------
-- 例1:
function f(a, b, c)
print(a, b, c)
end
f(1, 2) -- 缺少参数c,打印 1 2 nil
-- 例2:
function f(a, b, c)
return a, b; -- return 可以返回多个值
end
local i, j = f(1, 2)
print(f(1, 2))
3. table
- 数字下标(类似数组)
a = {1, "ac", {}, function() end} -- 不同于其他语言,索引从 1 开始,访问不存在索引返回 nil
a[10] = 'a' -- 可以直接指定任意索引赋值
table.insert(a, "abc") -- 通过table接口加入元素(尾插)
table.insert(a, 1, "acc") -- 在指定位置 1 处插入元素,后续元素都会后移
local s = table.remove(a, 2) -- 删除(并返回)数组指定的元素
print(#a) -- #table名 可获取table的元素数量
- 字符串下标(类似map)
a = {a = 1, b = "abc", c = function() end, [";;"] = 123}
print(a["a"]) -- 若 a 符合标准命名规范,可以直接 a.a 来调用
print(a[";;"]) -- 输出 123,[";;"]符合标志命名规则
a["x"] = "123123" -- 可以直接对一个下标赋值
4. 全局表(_G)
- 所有的全局变量都存在 _G 表里
a = 1;
print(_G["a"]) -- a 是全局变量,存于_G
print(_G["table"]["insert"]) -- table 和他的方法也存在全局表里
5. bool 型
a = true
b = false -- lua里,只有 false 和 nil 代表假,其余都是真,0也真
print(1~=2) -- 注意,lua里判断不等于用 ~= ,其余判断同于c
print(a and b) -- 与
print(a or b) -- 或
print(not a) -- 非
c = 10
print(b > 10 and "yes" or "no") -- 条件成立返回and后的值,反之返回or后的值
6. 分支判断
if 条件1 then -- then end 表示一个代码块,相当于 c 的 {}
...
elseif 条件2 then
...
else
...
end
7. 循环语句
- for 循环
for 变量 = 初始值, 终止值, 步长(可选) do
...
end
--------------------------------------------------
for i=10,1,-1 do
print(i)
if i == 5 then
break
end
i = 1 -- for的循环体里无法对循环变量进行修改,此时的i和上方的i是两个变量
end
- while 循环
while 条件 do
...
end
-------------------------------------------------
local n = 10;
while n > 1 do
if n == 5 then break end
n = n - 1 -- 注意:lua里不支持 ++ -- 操作
end