Lua函数

作者: IT白鸽 | 来源:发表于2018-05-28 23:20 被阅读0次

    函数

    在lua中,函数是对语句和表达式进行抽象的主要方法,皆可以用来处理一些特殊的工作,也可以用来计算一些值.
    主要用途:
        1.完成指定的任务,函数左为语句使用
        2.计算并返回值,函数左为赋值语句的表达式使用

    函数定义格式:

    optional_function_scope function function_name(argument1,argument2,argument3..,argumentn)
         function_body
         return result_params_comma_separated
    end
    

    optional_function_scope:可选的指定函数是全局还是局部函数,未设置默认全局,设置局部需要关键字local
    function_name:函数名称
    argument1,argument2,argument3..,argumentn:函数的参数,以逗号隔开,函数可以不带参数
    function_body:函数体,代码语句块
    result_params_comma_separated:函数返回值,lua语言可以返回多个值,每个值逗号隔开

    --判断最大的值
    function max(num1,num2)
        if(num1>num2) then
            result = num1;
        else
           result = num2;
        end
        return result
    end
    print("两个最大的值是: ", max(10,28))
    --结果:
    --28
    

    多返回值

    lua函数可以返回多个结果值,例如:string.find("string.val.com","val") 其返回匹配串"开始和结束的下表" ,如果不存在返回nil

    --求数组中最大的值和下标
    function maximum(a)
        local mi = 1;    --最大值索引
        local m = a[mi]  --最大值
        for i,val in ipairs(a) do
            if val > m then
                mi = i
                m = val
            end
        end
        return m,mi
    end
    print(maximum({8,20,30,40,51,1,5}))
    --结果:
    --51 5
    

    可变参数

    lua函数可以接受可变数目的参数,和c语言类似,在函数参数列表中使用三点(...)表示可变

    function add(...)
        local s = 0
        for i,v in ipairs{...} do
             s = s + v
        end
        return s
    end
    print(add(3,5,4,6));
    print(add(2,3))
    --结果:
    --18
    --5
    

    固定可变参数

    固定惨书必须放在变参数之前;

    function fwrite(fmt,...)
        return io.write(string.format(fmt,...))
    end
    fwrite("herbie\n")
    fwrite("%d %d\n",3,4)
    --结果:
    --herbie
    --3 4
    

    通常遍历边长的参数的时候只要使用{...},然而变长参数可能包含一些nil,那么可以用select 函数来访问变量参数
    方法:
    1.select('#',...) 返回可变参数的长度
    2.select(n,...) 访问n到 select('#',...)的参数

    注意: 调用select 时,必须传入一个固定参数selector(选择开关)和一系列变长参数,如果selector为数字n,那么select返回它第n个可变参数,否则只能为字符串"#",这样select 会返回变长的总数.

    function foo(...)
        for i = 1,select('#',...) do
             local arg = select(i,...);
         print("arg",arg);
        end
    end
    foo(1,2,3,4);
    --结果:
    --arg 1
    --arg 2
    --arg 3
    --arg 4
    

    相关文章

      网友评论

        本文标题:Lua函数

        本文链接:https://www.haomeiwen.com/subject/idfnjftx.html