LUA拾翠

一、函数

1、格式

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


2、多返回值

Lua函数可以返回多个结果值,比如string.find,其返回匹配串"开始和结束的下标"(如果不存在匹配串返回nil)。

> s, e = string.find("www.runoob.com", "runoob") 
> print(s, e)
5    10

3、多返回值

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

4

4、可变参数

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

我们可以将可变参数赋值给一个变量

function average(...)    result = 0
   local arg={...}    --> arg 为一个表,局部变量
   for i,v in ipairs(arg) do       result = result + v    end    print("总共传入 " .. #arg .. " 个数")    return result/#arg end
#arg --这个是参数的数量

获取可变参数的数量select("#",...)

function average(...)    result = 0    local arg={...}    for i,v in ipairs(arg) do       result = result + v    end
   print("总共传入 " .. select("#",...) .. " 个数")
   return result/select("#",...)
end
print("平均值为",average(10,5,3,4,5,6))

-----------------------------------固定参数+可变参数----------------------

function fwrite(fmt, ...)  ---> 固定的参数fmt     return io.write(string.format(fmt, ...))     end fwrite("runoob ")       --->fmt = "runoob", 没有变长参数。   fwrite("%d%d ", 1, 2)   --->fmt = "%d%d", 变长参数为 1 和 2


利用select('#',...)--返回可变参数的个数
select(n,...)-------返回第n个可变参数
do       function foo(...)           for i = 1, select('#', ...) do  -->获取参数总数             local arg = select(i, ...); -->读取参数             print("arg", arg);           end       end       foo(1, 2, 3, 4);   end
 
 



原文地址:https://www.cnblogs.com/justart/p/11648874.html