--特别字段 arg,会把传入的参数封装成一个表。arg就表示一个表,arg表的内容除了原先传入的参数,还多了一个传入参数的数量。
average()
average(10)
average(1,30)
average(3,8,90)
average(5,67,7,8,3)
function average(...)
print(arg[1])
end
-----------------------------------------------------
function average(...)
--local arg = {...} --不加这个,那average(1,2)函数的结果将是5,因为arg还有隐藏的参数
res = 0
for k,v in pairs(arg) do
res = res+v
end
print(res)
end
average(1,2) --输出:3
--# 号,可以表示当前table的最大索引或者字符串的长度
-- #arg 取得参数的个数 #"hello"
table = {"1","2","3","4"}
text = "Hi"
print(#table,#text); --输出: 4 2
tab = {}
tab[1]=234
tab[2]=234
tab[4]=2334
print(#tab) --输出:4
--For 循环详解
for 变量列表 in 迭代函数,状态变量,控制变量 do
--循环体
end
--示例:
for i,j in fun,10,0 do --10与0当做参数传递给迭代函数fun,状态变量不会改变,如果是函数体那就获取返回值
print(i,j)
end
function fun(init,control) --这个函数的作用是在循环过程中,每次返回当前循环的累计值i与相乘的j
if(control<=init) then
control=control+1
return control,control*control --返回两个变量,既是上面的i与j
else
return nil --达到初始值时就返回空值
end
end
--模块的使用
module.lua如下
{
module = {}
module.var = "11"
module.func1 = function () --与下面的函数是一模一样的,因为Lua的函数也可当做变量
print("这个是Module里面的函数")
end
function module.func1()
print("这个是Module里面的函数")
end
return module
}
require.lua如下
{
-- require "模块名"
-- require ("模块名")
m = require "module"
print(m.var) --输出:11
m.func1() --输出:这个是Module里面的函数
}