lua 函数
在lua中,函数是一种变量,可以作为函数的参数也可以作为函数的返回值;
函数定义方式:
function funName (a,b)
fun_part
end
其中 funName也可以省略,省略后即是匿名函数;
定义好函数之后就可以调用函数,可以这样使用:
首先将函数赋予一个变量
a=funName(); --在这个过程中只是执行函数中的变量声明及其运算部分,并不会返回值 a只是一个函数的地址
a() --在这个过程中,执行函数的返回值,如果返回值是一个函数,那么在这儿就会执行那个函数
a() --在这个过程中,仍然是只执行函数的返回值,变量用的是上次a()执行完后的变量,相当于c中的静态变量
但是如果再新建一个变量,那么主函数中的局部变量会重新初始化
c=funName() --重新初始化主函数中的局部变量
注意一点:funName() --这只是函数的一个地址,真正执行函数是funName() ()这种写法!

function test() local i=0 i=i+1; return function() i=i+1 return i end end c1=test(); print(c1()) print(c1()) c2=test(); print(c2()) print(test()()) print(test()()) print(test()())
下面介绍学习过程中遇到的lua函数:
table.concat(tb1, sep,start,end) --返回表tb1中第start到第end之间的元素,元素之间以 sep隔开 除tb1之外,其余参数均可以省略
table.insert(tb1,position,value) --在tb1中的第position个位置插入元素 value
table.remove(tb1,position) --移除tb1中的第position个元素
table.sort(table,comp) --对元素中指定的表进行排序,comp是排序的标准,可以省略,默认是从小到大排序
其中comp是一个外部函数,并且具备如下条件:接受两个参数 a,b 返回一个bool值; 如果a应该排在b前面,返回true 否则返回 false;
通过sort的函数形式,感觉好像是冒泡排序
tabel.getn(tb1) --获取表中元素的格式