Lua

 

2022-03-30

语法

语句

注释

1
-- 单行注释以两个连字符开头
2
3
--[[
4
多行注释
5
--]]

变量

1
num = 42 -- 全局变量
2
local num = 42 -- 局部变量
3
num = nil -- 撤销定义

Lua 唯一的组合数据结构,类型 Python 的字典或者是 JavaScript|JS 的对象。

1
myTable = {key = "value1", num = 42}
2
print(t.num) -- 获取指定键的值
3
t.num = nil -- 删除指定键
列表

在 Lua 中列表并非真正的类型,其实是一个 table。

1
myList = {"hello", 42}

条件语句

if

1
num = 42
2
if (num > 64) then
3
-- 为 true 时执行
4
print("num 大于 64")
5
end
6
7
-- 一行:判断是否为 true
8
if num then print(true) end

if…else

1
num = 42
2
if (num > 64) then
3
print("num 大于 64")
4
-- 为 false 时执行
5
else print("num 小于 64")
6
end
7
8
-- 一行
9
if (num > 64) then print("num 大于 64") else print("Num 小于 64") end
10
11
12
13
-- 嵌套
14
num1, num2 = 24, 42
15
if (num1 == 24) then
16
if (num2 == 42) then
17
print("Num2 等于 42")
18
end
19
else print("Test")
20
end

if…elseif…else

1
num = 42
2
if (num < 24) then
3
print("num 小于 24")
4
elseif (num == 24) then
5
print("num 等于 24")
6
elseif (num == 42) then
7
print("num 等于 42")
8
else print("num 大于 42")
9
end

循环语句

while 循环

1
num = 0
2
while(num < 10)
3
do
4
print(num)
5
num = num + 1
6
end

repeat…until

repeat…until 循环的条件语句在当前循环结束后判断,所以在条件进行判断前循环体都会执行一次,而且在条件进行判断语句为 ture 时才会停止执行。

1
num = 0
2
repeat
3
print(num)
4
num = num + 1
5
until(num > 10)

函数

1
-- 返回最大值
2
function mySum(x, y)
3
return x + y
4
end
5
6
local = function(x, y) return x + y end
7
8
print("最大值为", max(24, 42))

默认值

1
function sayHello(name)
2
-- 如果 name 为空,则赋值为 immwind
3
-- Lua 空值为 nil
4
name = name or "immwind"
5
print("Hello, " .. name)
6
end
7
8
sayHello("w")

模块