📜  Lua-函数(1)

📅  最后修改于: 2023-12-03 15:02:48.829000             🧑  作者: Mango

Lua-函数

函数是Lua编程语言最基本,也是最重要的概念之一。通俗的讲,函数就是一段封装好的代码,可以在程序中调用多次,避免重复的代码书写,提高程序的可读性和可维护性。

定义函数

在Lua中定义函数的语法格式如下:

function 函数名(参数1, 参数2, ...) 
    -- 函数体 
    return 返回值
end

其中,function是Lua的关键字,表示开始一个函数的定义,函数名是用户自定义的函数名称,参数1, 参数2, ...是函数的参数列表,这里可以是多个参数,如果没有参数,那么参数列表可以省略不写,-- 函数体是函数的主体部分,函数里面要实现的逻辑代码需要写在这里,return关键字用来将函数的返回值返回给函数调用者,如果函数没有返回值或者没有写return关键字,则默认返回nil

调用函数

在Lua中调用函数的语法格式如下:

-- 调用无参函数
函数名()

-- 调用有参函数
函数名(参数1, 参数2, ...)

如上所示,要调用函数,只需要写上函数名称,然后在函数名称后面加上一对小括号即可,如果有参数需要传递给函数,则在小括号中传递参数即可。

函数的返回值

函数可以有返回值,也可以没有返回值,对于无返回值的函数,调用者可以采用下面两种方式来判断函数的调用结果:

-- 无返回值的函数
function print_hello()
    print("Hello, Lua!")
end

-- 方式一:函数直接调用,不需要进行判断
print_hello()

-- 方式二:通过调用pcall()函数来捕获函数调用的返回结果
if pcall(print_hello) then
    print("函数调用成功")
else
    print("函数调用失败")
end

对于有返回值的函数,则需要在函数的定义中使用return关键字显式的返回函数的返回值。如果函数定义中没有使用return语句,则函数的返回值就是nil。具体的示例如下:

-- 有返回值的函数
function add(a, b)
    return a + b
end

-- 方式一:把返回值赋值给变量
result = add(1, 2)
print(result)

-- 方式二:直接调用,并输出函数返回值
print(add(3, 4))
匿名函数

在Lua中,函数可以像变量一样进行赋值和传递,这种函数称为匿名函数。匿名函数是一种没有名称的函数,可以通过变量名来引用和调用。定义匿名函数的语法格式如下:

-- 定义匿名函数
var = function(参数1, 参数2, ...)
    -- 函数体 
    return 返回值
end

-- 调用匿名函数
var(参数1, 参数2, ...)

使用匿名函数的示例如下:

-- 赋值匿名函数给变量
sum = function(a, b)
    return a + b
end

-- 调用匿名函数
print(sum(10, 20))
可变参数函数

在Lua中,函数可以接收可变数量的参数,这种可变参数函数称为可变参数函数。使用可变参数函数可以使代码更加的简洁和高效。定义可变参数函数的语法格式如下:

-- 可变参数函数
function add(...)
    -- 计算所有参数的和
    local sum = 0
    for i, v in ipairs({...}) do
        sum = sum + v
    end
    return sum
end

-- 调用可变参数函数
print(add(10, 20, 30, 40))
print(add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))

如上所示,可变参数函数使用三个点(...)来表示,...表示一个未定数量的参数,可以是零个或多个参数。函数内部使用arg{...}来获取可变参数。在上面的示例中,我们使用了arg来获取可变参数,同时还使用了ipairs()函数来遍历可变参数,并将参数的值累加到sum变量中,最后返回sum变量的值。

总结:

  • 函数是Lua编程语言最基本,也是最重要的概念之一。
  • 函数可以有参数和返回值,也可以没有参数和返回值。
  • 匿名函数是一种没有名称的函数,可以像变量一样进行传递和调用。
  • 可变参数函数可以接收可变数量的参数,使用...来表示。