LuaForUnity4:Lua的函数

 

一、Lua的函数

代码中有注释

一些重点:

  • Lua的函数可以返回多个结果,你可以将它们赋值给数组
  • function 函数名(...):函数传入可变参数
  • select("#", ...):求出可变参数的参数数量
  • 在Lua中无论在哪里申请变量,都算作全局变量,只要没有用local关键字
print("----------------------------------------------------------")
local function max(num1, num2)              --num1, num2为函数的参数,locol表示当前函数为局部函数,缺省的话默认为全局函数
    if (num1 > num2) then
        result = num1;
    else
        result = num2;
    end
    return "输出结果:", result              --Lua的函数可以返回多个值,它们用逗号隔开
end
-- 调用函数
print(max(10,4))
range = {max(5, 6)}         --将函数返回的多个值按顺序存入数组中
print(range[1])
print(range[2])

print("----------------------------------------------------------")
function add(num1, num2, maxfunction)       --函数作为参数传递
    range = {maxfunction(num1, num2)}       --如果这里不打上大括号(作为数组),那么result只能获得函数返回的第一个值,12行同
    result = "最大值" .. range[1] .. range[2]      --在Lua中无论在哪里申请变量,都算作全局变量,只要没有用local关键字
    return result
end
print(add(100, 500, max))
print("----------------------------------------------------------")
function count(...)                     --可变长度参数,也就是说参数数量可以不确定
    local sum = 0                       --局部变量
    for i, v in ipairs{...} do          --暴力传入的所有参数,求和
        sum = sum + v;
    end
    return sum
end
print(count(5, 6, 7, 8, 9))
print("----------------------------------------------------------")
fun = {}                                             --另一种定义函数的方式:将函数作为一个value
fun.average = function(dir, ...)                     --固定参数 + 可变参数传法,求平均数*dir
    local sum = 0
    for i, v in ipairs{...} do          --暴力传入的所有参数,求和
        sum = sum + v;
    end
    result = sum * dir;
    result = result / select("#", ...)      -- select("#", ...):求出可变参数的参数数量
    return result
end
print(fun.average(100, 5, 6, 7, 8, 9))
print("----------------------------------------------------------")
range = {[2] = "v2", [1] = "v1", [4] = "v4"}
for k, v in ipairs(range) do
    print(k, v)
end
print("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++")
for k, v in pairs(range) do
    print(k, v)
end

 

二、pairs 和 ipairs 的区别

  • pairs:会遍历 table 中所有的 key-value
  • ipairs:根据 key 的值从1开始遍历,遇到 nil 就结束

运行一下下面的代码就秒懂了

range = {[2] = "v2", [1] = "v1", [4] = "v4"}
for k, v in ipairs(range) do
    print(k, v)
end
print("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++")
for k, v in pairs(range) do
    print(k, v)
end

输出结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值