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/#argend
#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, ...))     endfwrite("runoob\n")       --->fmt = "runoob", 没有变长参数。  fwrite("%d%d\n", 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
 
 



计算机