Lua简单入门笔记
目录
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