Cocos2d-Lua之函数

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 * b
end

输出结果:

这里写图片描述

--无参有返回
res = fun()
print(res)

function fun()
    local a = 1
    return a
end

输出结果:

这里写图片描述

--默认参数
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 3
b = b or 5
c = 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)

    end
end

输出结果:

这里写图片描述

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

注意:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值