1. 定义函数
在 Lua 中,你可以使用 function
关键字来定义一个函数。以下是一个简单的例子:
lua
-- 定义一个名为 add 的函数,接受两个参数 a 和 b
function add(a, b)
return a + b
end
你也可以使用匿名函数(lambda 函数)的形式来定义函数:
lua
-- 定义一个匿名函数并赋值给变量 add
add = function(a, b)
return a + b
end
2. 调用函数
定义好函数之后,你可以通过函数名和参数来调用它:
lua
result = add(3, 5)
print(result) -- 输出 8
3. 多返回值
Lua 函数可以返回多个值,这是通过返回一个表(table)或者简单地返回多个值来实现的:
lua
function getCoordinates()
return 10, 20
end
x, y = getCoordinates()
print(x) -- 输出 10
print(y) -- 输出 20
4. 可变参数
Lua 函数支持可变数量的参数。你可以使用 ...
来表示可变参数,并通过 table.pack
和 table.unpack
来处理它们:
lua
function sum(...)
local args = table.pack(...)
local total = 0
for i, v in ipairs(args) do
total = total + v
end
return total
end
print(sum(1, 2, 3, 4)) -- 输出 10
5. 闭包
Lua 支持闭包(closure),即函数可以捕获并记住其外部作用域中的变量:
lua
function makeCounter()
local count = 0
return function()
count = count + 1
return count
end
end
counter = makeCounter()
print(counter()) -- 输出 1
print(counter()) -- 输出 2
6. 递归函数
Lua 也支持递归函数,即函数可以调用自身:
lua
function factorial(n)
if n == 0 then
return 1
else
return n * factorial(n - 1)
end
end
print(factorial(5)) -- 输出 120
7. 高阶函数
Lua 函数可以作为参数传递给其他函数,也可以作为返回值:
lua
-- 定义一个高阶函数,接受一个函数 f 和一个值 x
function applyFunction(f, x)
return f(x)
end
-- 定义一个简单的函数
function double(x)
return x * 2
end
-- 调用高阶函数
result = applyFunction(double, 3)
print(result) -- 输出 6
8. 局部函数和嵌套函数
Lua 支持局部函数,即定义在另一个函数内部的函数:
lua
function outerFunction()
local function innerFunction()
print("This is the inner function")
end
innerFunction()
end
outerFunction() -- 输出 "This is the inner function"
总结
Lua 的函数非常灵活和强大,支持多种编程范式和技巧。通过掌握函数的定义、调用、多返回值、可变参数、闭包、递归、高阶函数以及局部函数,你可以更加高效地编写 Lua 脚本。希望这个教程对你有所帮助!