Lua - 函数

  • 简述

    函数是一组一起执行任务的语句。您可以将代码划分为单独的函数。如何在不同功能之间划分代码取决于您,但从逻辑上讲,划分通常是唯一的,因此每个功能执行特定任务。
    Lua 语言提供了许多您的程序可以调用的内置方法。例如,方法print() 打印在控制台中作为输入传递的参数。
    函数具有各种名称,例如方法、子例程或过程等。
  • 定义函数

    Lua 编程语言中方法定义的一般形式如下 -
    
    optional_function_scope function function_name( argument1, argument2, argument3........, 
    argumentn)
    function_body
    return result_params_comma_separated
    end
    
    Lua 编程语言中的方法定义由方法头方法体组成。以下是方法的所有部分 -
    • Optional Function Scope- 您可以使用关键字local来限制函数的作用域或忽略作用域部分,这将使其成为全局函数。
    • Function Name- 这是函数的实际名称。函数名和参数列表共同构成了函数签名。
    • Arguments- 一个参数就像一个占位符。当一个函数被调用时,你将一个值传递给参数。该值称为实际参数或实参。参数列表是指方法参数的类型、顺序和数量。参数是可选的;也就是说,一个方法可能不包含任何参数。
    • Function Body − 方法体包含一组定义方法功能的语句。
    • Return − 在 Lua 中,可以通过在 return 关键字后面使用逗号分隔的返回值来返回多个值。
  • 例子

    以下是一个名为的函数的源代码 max(). 此函数采用两个参数 num1 和 num2 并返回两者之间的最大值 -
    
    --[[ function returning the max between two numbers --]]
    function max(num1, num2)
       if (num1 > num2) then
          result = num1;
       else
          result = num2;
       end
       return result; 
    end
    
  • 函数参数

    如果一个函数要使用参数,它必须声明接受参数值的变量。这些变量被称为formal parameters 的功能。
    形参就像函数内部的其他局部变量一样,在进入函数时创建,在退出时销毁。
  • 调用函数

    在创建 Lua 函数时,您需要定义函数必须做什么。要使用方法,您必须调用该函数来执行定义的任务。
    当程序调用一个函数时,程序控制转移到被调用的函数。被调用的函数执行定义的任务,当它的 return 语句被执行或当它的函数结束时,它将程序控制返回给主程序。
    要调用一个方法,您只需要传递所需的参数和方法名称,如果该方法返回一个值,那么您就可以存储返回的值。例如 -
    
    function max(num1, num2)
       if (num1 > num2) then
          result = num1;
       else
          result = num2;
       end
       return result; 
    end
    -- calling a function
    print("The maximum of the two numbers is ",max(10,4))
    print("The maximum of the two numbers is ",max(5,6))
    
    当我们运行上面的代码时,我们将得到以下输出。
    
    The maximum of the two numbers is   10
    The maximum of the two numbers is   6
    
  • 分配和传递函数

    在 Lua 中,我们可以将函数赋值给变量,也可以将它们作为另一个函数的参数传递。这是一个在 Lua 中分配和传递函数作为参数的简单示例。
    
    myprint = function(param)
       print("This is my print function -   ##",param,"##")
    end
    function add(num1,num2,functionPrint)
       result = num1 + num2
       functionPrint(result)
    end
    myprint(10)
    add(2,5,myprint)
    
    当我们运行上面的代码时,我们将得到以下输出。
    
    This is my print function -   ##    10  ##
    This is my print function -   ##    7   ##
    
  • 带有可变参数的函数

    可以在 Lua 中使用“...”作为参数来创建带有可变参数的函数。我们可以通过查看一个示例来了解这一点,在该示例中,该函数将返回平均值并且它可以采用可变参数。
    
    function average(...)
       result = 0
       local arg = {...}
       for i,v in ipairs(arg) do
          result = result + v
       end
       return result/#arg
    end
    print("The average is",average(10,5,3,4,5,6))
    
    当我们运行上面的代码时,我们将得到以下输出。
    
    The average is  5.5