1. -- 方式一
  2. function 函数名()
  3. -- 函数体
  4. end
  5. -- 方式二
  6. -- 类似于C#中的委托和事件
  7. 函数名 = function()
  8. -- 函数体
  9. end

形式参数

如果调用函数传入参数和形参列表不匹配
程序不会报错,会进行补空(nil) 或者丢弃

多返回值

多返回值时,在前面声明多个变量接收即可

  • 返回值不够,只接取对应位置
  • 返回值多了,补空丢弃,赋值为nil

    函数重载

    不支持函数重载,默认调用最后一个声明的函数

    变长参数

    变长参数,用一个表存起来再用
    function fun(...)
    args = {...}
    end
    

    函数嵌套

    返回函数

    function fun()
    return function()
      print(123)
    end
    end
    

    闭包

    改变传入参数的生命周期
    -- 闭包
    function fun(x)
      -- 改变传入参数的生命周期
      return function(y)
          return x + y
      end
    end
    f = fun(10)
    print(f(5))
    

    output: 15