当前位置:   article > 正文

Lua 函数

Lua 函数

在 Lua 中,函数是非常重要的组成部分,用于组织和复用代码。Lua 的函数支持多种特性,包括可变参数列表、闭包、匿名函数等。下面是 Lua 中函数的一些基本概念和用法:

定义函数

在 Lua 中,使用 function 关键字定义函数。

示例
function greet(name)
    print("Hello, " .. name .. "!")
end
  • 1
  • 2
  • 3

调用函数

调用函数很简单,只需要使用函数名并传递所需的参数。

示例
greet("Alice")  -- 输出 "Hello, Alice!"
  • 1

参数传递

Lua 支持位置参数和可变参数列表。

位置参数
function add(a, b)
    return a + b
end

local sum = add(10, 20)
print(sum)  -- 输出 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
可变参数列表

可以使用 ... 表示可变参数列表。

示例
function sum(...)
    local total = 0
    for i, v in ipairs({...}) do
        total = total + v
    end
    return total
end

local s = sum(1, 2, 3, 4, 5)
print(s)  -- 输出 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

返回值

Lua 函数可以返回多个值。

示例
function divide(a, b)
    return a / b, a % b
end

local quotient, remainder = divide(10, 3)
print(quotient, remainder)  -- 输出 3.3333333333333 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

本地函数

可以使用 local 关键字定义局部函数,使其仅在定义它的作用域内可见。

示例
local function localGreet(name)
    print("Local Greeting: " .. name)
end

localGreet("Bob")  -- 输出 "Local Greeting: Bob"
-- greet("Bob")  -- 这里会出错,因为 greet 不是全局可见的
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

闭包

闭包是指可以访问其外部作用域中的变量的函数。

示例
function createCounter()
    local count = 0
    return function()
        count = count + 1
        return count
    end
end

local counter = createCounter()
print(counter())  -- 输出 1
print(counter())  -- 输出 2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

匿名函数

可以定义匿名函数并在需要的地方立即使用。

示例
local result = (function(x, y)
    return x * y
end)(10, 5)

print(result)  -- 输出 50
  • 1
  • 2
  • 3
  • 4
  • 5

函数作为值

函数可以像普通变量一样被赋值和传递。

示例
local function add(a, b)
    return a + b
end

local sumFunc = add
print(sumFunc(10, 20))  -- 输出 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

函数作为参数

可以将函数作为参数传递给其他函数。

示例
function applyOperation(operation, a, b)
    return operation(a, b)
end

local result = applyOperation(function(x, y) return x * y end, 10, 5)
print(result)  -- 输出 50
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

示例:使用函数编写计算器

下面是一个简单的计算器程序,它使用不同的函数来执行加、减、乘、除操作。

function add(a, b)
    return a + b
end

function subtract(a, b)
    return a - b
end

function multiply(a, b)
    return a * b
end

function divide(a, b)
    if b ~= 0 then
        return a / b
    else
        return nil, "Cannot divide by zero"
    end
end

local operations = {
    add = add,
    subtract = subtract,
    multiply = multiply,
    divide = divide
}

local op, a, b = "add", 10, 5
local result, err = operations[op](a, b)

if err then
    print(err)
else
    print("Result: " .. result)
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

这些是 Lua 中函数的基本概念和用法。如果您需要更详细的解释或有其他问题,请随时提问!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/963942
推荐阅读
相关标签
  

闽ICP备14008679号