深入浅出游戏算法(3)-lua脚本(6)

函数通过以下格式声明:

function 函数名

语句块

return 结果

end

结果可以是一个,下面函数计算最大值:

function maxnum(nums)

        maxnum=nil

        for i,v in ipairs(nums) do

                if(maxnum==nil) then

                        maxnum=v

                elseif (v>maxnum) then

                        maxnum=v

                end

        end

        return maxnum

end

print(maxnum ({20,19,-23,44,68}))

dp@dp:~ % lua test2.lua

68

dp@dp:~ % 

也可以是多个,下面函数同时返回最小和最大值:

dp@dp:~ % vim test.lua 

function maxminnum(nums)

        maxnum=nil

        minnum=nil

        for i,v in ipairs(nums) do

                if(maxnum==nil) then

                        minnum=v

                        maxnum=v

                end

                if (v>maxnum) then

                        maxnum=v

                end

                if (v<minnum) then

                        minnum=v

                end

        end

        return maxnum,minnum

end

print(maxminnum ({20,19,-23,-44,68,21,-80})) 

dp@dp:~ % lua test.lua

68 -80

麦好的AI乐园博客所有内容是原创,如果转载请注明来源

http://blog.csdn.net/myhaspl/


unpacktable中的元素一个个提取出来。

比如:

> a={11,22,33}

> print(a)

table: 0x28428ec0

> print(a[0],a[1],a[3])

nil 11 33

> print(a[1],a[2],a[3])

11 22 33

> x=a

> print(x)

table: 0x28428ec0

> print(x[1],x[2],x[3])

11 22 33

> y1,y2,y3=unpack(a)

> print(y1..y2..y3)

112233

> print(y1)

11

> print(y2)

22

> print(y3)

33

可以通过“...”向函数传递多个参数

dp@dp:~ % vim test.lua

function maxminnum(...)

        maxnum=nil

        minnum=nil

        for i,v in ipairs{...} do

                if(maxnum==nil) then

                        minnum=v

                        maxnum=v

                end

                if (v>maxnum) then

                        maxnum=v

                end

                if (v<minnum) then

                        minnum=v

                end

        end

        return maxnum,minnum

end

print(maxminnum (20,19,-23,-44,68,21,-80))

dp@dp:~ % lua test.lua

68 -80

通过传送table,并指定参数名称,达到指定实参的效果

dp@dp:~ % vim test.lua

function xllen(nums)

        x=nums.x

        y=nums.y

        z=nums.z

        return math.sqrt(x*x+y*y+z*z)

end

print(xllen{x=10,y=-9,z=5})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值