local function swap(a, b) --定义函数 swap,在函数内部交换两个变量的值
local temp = a
a = b
b = temp
print(a, b)
end
local x = "hello"
local y = 20
print(x, y)
swap(x, y) --调用 swap 函数
print(x, y) --调用 swap 函数后,x 和 y 的值并没有交换
-->output
hello 20
20 hello
hello 20
在调用函数的时候,若形参个数和实参个数不同时,Lua 会自动调整实参个数。调整规则:
若实参个数 大于 形参个数,从左向右,多余的实参被忽略;
若实参个数 小于 形参个数,从左向右,没有被实参初始化的形参会被初始化为 nil。
示例代码:
local function fun1(a, b) --两个形参,多余的实参被忽略掉
print(a, b)
end
local function fun2(a, b, c, d) --四个形参,没有被实参初始化的形参,用 nil 初始化
print(a, b, c, d)
end
local x = 1
local y = 2
local z = 3
fun1(x, y, z) -- z 被函数 fun1 忽略掉了,参数变成 x, y
fun2(x, y, z) -- 后面自动加上一个 nil,参数变成 x, y, z, nil
-->output
1 2
1 2 3 nil