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()())
View Code

 

下面介绍学习过程中遇到的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)                       --获取表中元素的格式

posted @ 2015-07-04 11:46  沙中世界  阅读(167)  评论(0)    收藏  举报