zoukankan      html  css  js  c++  java
  • 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可变长参数 ... 三个点

  • 相关阅读:
    Centos7 关闭防火墙
    Linux下磁盘挂载
    Sqlserver游标复习
    Redis-benchmark测试Redis性能
    将treeview控件内容导出图片
    使用redis进行消息推送
    web性能优化系列之网站瓶颈识别
    SqlServer时间格式化
    PHP二位数组/多维数组 根据某个键值排序
    VIM Taglist + ctags
  • 原文地址:https://www.cnblogs.com/guoew/p/10251151.html
Copyright © 2011-2022 走看看