lua 6 函数

定义:

function max(num1, num2)
  local result = 0
  if (num1 > num2) then
    result = num1;
  else
    result = num2;
  end
  
  return result, "ok"; --> 可以返回多值
end

  

局部函数:在 require() 时,local 的函数不能被别的 script 调用,相当于 C++ 的 private。

local function max(num1, num2)
  local result = 0
  if (num1 > num2) then
    result = num1;
  else
    result = num2;
  end
  
  return result; 
end

  

可变形参:

function add(str, ...)  -- 固定参数必须放在变长参数之前
print("总共传入 " .. select("#",...) .. " 个数") -- 获得输入可变参数的数量

local s = 0  
  for i, v in ipairs{...} do   --> {...} 表示一个由所有变长参数构成的数组  
    s = s + v  
  end  
  return s  
end  
print(add(3,4,5,6,7))  --->25

---- select 的用法

function foo(...)  
  for i = 1, select('#', ...) do  -->获取参数总数
    local arg = select(i, ...); -->读取参数
    rint("arg", arg);  
  end  
end  

foo(1, 2, 3, 4);  

--------- result ----------
arg	1
arg	2
arg	3
arg	4

    

函数作为形参:

function sortTable(t, _f) -- _f 函数形参
  table.sort(t, _f)
end 

-- call

function f(a1, a2)
  return a1 > a2
end

v = {1,8,0,4,2,8,9,2}
sortTable(v, f) -- f 函数变量

  

参考:

http://www.runoob.com/lua/lua-functions.html

原文地址:https://www.cnblogs.com/alexYuin/p/9948728.html