函数

作者: 爱折腾的傻小子 | 来源:发表于2021-01-05 16:51 被阅读0次

    Lua 函数

    • 在Lua中,函数是对语句和表达式进行抽象的主要方法
    • Lua 提供了许多的内建函数,你可以很方便的在程序中调用它们,如print()函数可以将传入的参数打印在控制台上
    • Lua 函数主要有两种用途:
      • 完成指定的任务,这种情况下函数作为调用语句使用
      • 计算并返回值,这种情况下函数作为赋值语句的表达式使用
    • 函数定义
    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语言函数可以返回多个值,每个值以逗号隔开
    -- 定义max函数 返回最大值
    function max(max1, max2)
        if max1 > max2 then
            return max1
        else
            return max2
        end
    end
    print(max(8,9))  -- 9
    print(max(8,8))  -- 8
    print(max(8,7))  -- 8
    
    -- 将函数作为参数传递给函数
    myFunc = function(param)
        print("打印param:", param)
    end
    
    function add(num1, num2, func)
        func(num1 + num2)
    end
    
    myFunc(100)
    add(4, 6, myFunc)
    --[[
    打印param:    100
    打印param:    10
    ]]
    
    • 多返回值
    -- string.find 其返回匹配串"开始和结束的下标"(如果不存在返回nil)
    s, e = string.find("~~~ hello Lua!", "hello")
    print(s, e) -- 5 9      5 开始位置 9 结束位置
    
    ss, ee = string.find("~~~ hello Lua!", "hello1")
    print(ss, ee)   -- nil nil
    
    -- 获取table中的最大值即索引值
    function maximum(a)
        local mi = 1    -- 最大索引
        local m = a[mi] -- 最大值
        for i, v in ipairs(a) do
            if v > m then
                mi = i
                m = v
            end
        end
        return m, mi
    end
    
    print(maximum({8,10,23,12,5}))  -- 23   3
    
    • 可变参数
    • Lua函数可以接受可变数目的参数,和C语言类似在函数参数列表中使用三点(...) 表示函数有可变的参数
    • Lua将函数的参数放在一个叫arg的表中,#arg 表示传入参数的个数
    -- 计算平均值
    function average(...)
        result = 0
        local arg = {...}
        for i, v in ipairs(arg) do
            result = result + v
        end
        print("传入参数个数:", #arg)
        return result/#arg
    end
    
    print("平均值:", average(10,5,3,4,5,6))
    --[[
    传入参数个数: 6
    平均值:    5.5
    ]]
    

    相关文章

      网友评论

          本文标题:函数

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