今天学习第五章 函数

5. Functions
1)函数定义:
     function func(arg_list)
          stat_list
     end
     
     (a)对只有一个参数且为字符串或表构造时,可以不用括号:
     如:     func("abcd") <----> func "abcd"
     (b)对函数参数赋值同一般的等号赋值,缺少补nil,多余忽略
 
2)函数返回值可以为多个:
     function func()
          return 1,2
     end
     
     a,b  = func()
     (a)可以用()强制只返回一个值 如 print( (func()) )--> 1
     (b)当不需要一个返回值时,可用 “_”占位,如:
               _, b = func() ---> b = 2
 
3)可变参数:
     Lua将可变参数,记录在一个叫arg的表中,如:
     function p(a,b, ...)
          for i,v in ipairs(arg) do
               ...
           end
     end     
 
     p(1)  ---> a = 1, b = nil, arg = {n = 0}
     p(1,2) --->a = 1, b = 2, arg = {n = 0}
     p(1,2,3,4) ---> a = 1, b = 2, arg = {3,4; n=2} 
 
 
4)命名参数:
     在函数调用时,显示说明输入的实参是属于哪个形参的,可以做到不依据形参顺序来输入参数,方便一些可选参数的输入。如:
     function func(height,length,width,vol)
          ...
     end
 
     调用时可以:
          func(vol = 5, length = 10)相当于-->  func(nil, 10, nil, 5)