语法

语句

注释

-- 单行注释以两个连字符开头 
 
--[[ 
     多行注释
--]]

变量

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

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

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

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

myList = {"hello", 42}

条件语句

if

num = 42
if (num > 64) then
 -- 为 true 时执行
    print("num 大于 64")
end
 
-- 一行:判断是否为 true
if num then print(true) end

if…else

num = 42
if (num > 64) then
    print("num 大于 64")
-- 为 false 时执行
else print("num 小于 64")
end
 
-- 一行
if (num > 64) then print("num 大于 64") else print("Num 小于 64") end
 
 
 
-- 嵌套
num1, num2 = 24, 42
if (num1 == 24) then
    if (num2 == 42) then
        print("Num2 等于 42")
    end
else print("Test")
end

if…elseif…else

num = 42
if (num < 24) then
    print("num 小于 24")
elseif (num == 24) then
    print("num 等于 24")
elseif (num == 42) then
    print("num 等于 42")
else print("num 大于 42")
end

循环语句

while 循环

num = 0
while(num < 10)
do
    print(num)
    num = num + 1
end

repeat…until

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

num = 0
repeat
    print(num)
    num = num + 1
until(num > 10)

函数

-- 返回最大值
function mySum(x, y)
    return x + y
end
 
local = function(x, y) return x + y end
 
print("最大值为", max(24, 42))

默认值

function sayHello(name)
-- 如果 name 为空,则赋值为 immwind
-- Lua 空值为 nil
    name = name or "immwind"
    print("Hello, " .. name)
end
 
sayHello("w")

模块