• lua函数


    1. 函数定义

    lua 使用function定义函数,语法如下:

    function  fun_name(args)  --args表示参数列表,函数的参数列表可以为空
        --body
    end
    

    上面方法定义了一个全局函数,为了不污染命名空间,同时减少性能损耗,应该尽量使用局部函数,方法如下(只要在function前面加local 声明即可)

    local function  fun_name(args)  --args表示参数列表,函数的参数列表可以为空
        --body
    end
    

    2. 函数参数

    函数传参几个规则
    1. 若参数个数大于形参个数,从左向右,多余的实参被忽略
    2. 若参数个数小于形参个数,从左向右,没有被初始化的形参被初始化为nil
    3. lua支持变长参数。用...表示,在参数列表后面。一个可变长参数不会有一个对应参数列表。他会收集所有的参数放进一个变参表达式里(...)。这个表达式的值表示所有参数值。它与函数多返回值的那种情况是相似的。如果一个变参表达式在是其他表达式内部或在一些表达式的中间,他只返回是一个元素,例如: local cc,dd,ee = a,...,34。 如果这个表达式是在表达式列表的最后一个,他不会对参数进行调和除非用一个括号。

    例如有如下三个函数

    function f(a,b) end
    function g(a,b,...) end
    function r() return 1,2,3 end
    

    传入的参数与参数映射如下

    CALL          PARAMETERS
    f(3)               a=4,b=nil --没有为b传值则b为nil
    f(4,5)            a=4,b=5        --参数一一对应
    f(3,4,5)         a=3,b=4        --多余参数无作用
    f(r(),10)        a=1,b=10      --可变参数在中间,表达式的值则是第一个变参列表元素
    f(r())             a=1,b=2        -- 可变参数在最后不受影响
    
    g(3)              a=3,b=nil, ... -->(nothing)    --b参数和...参数都没有传参数则为nil
    g(3,4)           a=3,b=4, ...  -->(nothing)     --没有为可变参数传参则为nil
    g(3,4,5,6)     a=3,b=4, ...  -->5 6               --可变参数为最后一个,则自动收集参数列表到可变参数
    g(5,r())         a=5,b=1, ... -->2,3                 --第二个参数b传的是一个可变参,则b为可变参数的第一个元素。第三个参数是个可变参,它取可变参的剩余参数
    

    3. 函数范例

    如下定义一个max函数,参数为n1,n2,用于比较两数值的大小

    function max(num1,num2)
        if (num1>num2) then
            result = num1
        else
            result = num2
        end
    
        return result    
    end
    
    print("两值比较最大值为",max(10,10))
    

    致谢!

    LUA可变长参数 ... 三个点

  • 相关阅读:
    Git 处理tag和branch的命令
    手把手教您使用第三方登录
    iOS 中隐藏UITableView最后一条分隔线
    Android简易实战教程--第四十四话《ScrollView和HorizontalScrollView简单使用》
    iOS-改变UITextField的Placeholder颜色的三种方式
    react-native 关闭黄屏警告
    reactnative js onclick 模拟单击/双击事件
    reactnative 监听屏幕方向变化
    reactnative0.61.2 使用react-native-webrtc
    use react-navigation@2.18.2
  • 原文地址:https://www.cnblogs.com/guoew/p/10251151.html
Copyright © 2020-2023  润新知