Cocos2d-Lua之函数

来源:互联网 发布:钓鱼软件qq盗号 编辑:程序博客网 时间:2024/05/30 04:17

Lua脚本语言的函数类型有很多种,不仅包括常见的无参无返回,有参无返回,有参有返回,无参有返回,默认参数,还有不定参数的情况。下面一一举个例子

--无参无返回fun()function fun()    print("fun()")end

输出结果:

这里写图片描述

--有参无返回fun(5, 6)function fun(a, b)    print(a + b)end

输出结果:

这里写图片描述

--有参有返回res = fun(5, 6)print(res)function fun(a, b)    return a * bend

输出结果:

这里写图片描述

--无参有返回res = fun()print(res)function fun()    local a = 1    return aend

输出结果:

这里写图片描述

--默认参数fun()print("----------------")fun(1)print("----------------")fun(1, 2)print("----------------")fun(1, 2, 3)print("----------------")fun(nil, 1)print("----------------")fun(nil, nil, 1)print("----------------")function fun(a, b, c)    a = a or 3    b = b or 5    c = c or 7    print(a)    print(b)    print(c)end

输出结果:

这里写图片描述

这里稍微说明一下:

以往高级语言的默认参数

fun(a = 3, b = 5, c = 7)

的行式,在Lua中必须使用

a = a or 3b = b or 5c = c or 7

的形式,如果尝试用以往的默认参数的形式会报错(本人亲试)。在调用带有默认参数的函数进行传参时,可以专门只传给某一个参数,只要把这个参数前面的参数值都设为nil即可(例子中已经展示的很清楚了)。

--不定参数len = fun(1, "a", true, funa)print(len)function fun(...)    local a, b, c, d, e = ...    print(a)    print(b)    print(c)    print(d)    print(e)    return select("#", ...)end

输出结果:

这里写图片描述

不定参数的函数的参数列表使用”…”表示的,并且传给多个参数,通过select函数获取传入参数的个数(select函数的格式是固定的,记住就可以了),可以明显的看到通过声明多个变量获取传入的参数是相当不明智的,因为不知道要声明多少个变量。这里就换一种方式获取传入的参数:

--不定参数fun(1, "a", true, funa)function fun(...)    for k, v in ipairs({...})        do            print(k, v)    endend

输出结果:

这里写图片描述

这里用一个for循环获取传入的参数,其中k记录下标,v记录参数值,显然这样就方便了许多。

注意:

细心的话可以发现所有的例子全是用一个函数名fun,我主要为了试验Lua中的函数是否支持函数重载这么一说,后来发现最后一次声明的fun函数直接覆盖掉了之前声明的fun函数,所以说Lua并没有函数重载这么一说。

多次试验发现这个原因呢也很简单,如果对于一个函数中传入的参数不够,后面的参数的值就是nil,如果传入的参数过多,就被丢弃。

0 0
原创粉丝点击