查看: 2|回复: 0

LUA进阶教程——函数进阶(闭包、高阶函数、协程基础)

[复制链接]

28

主题

68

回帖

1441

积分

金牌会员

积分
1441
QQ
发表于 昨天 15:18 | 显示全部楼层 |阅读模式
闭包(Closure):函数捕获外部变量
local function counter()
    local i = 0
    return function()
        i = i + 1
        return i
    end
end

local c1 = counter()
print(c1()) -- 1
print(c1()) -- 2
高阶函数(函数作为参数 / 返回值)
-- map
local function map(t, func)
    local res = {}
    for i,v in ipairs(t) do
        res[i] = func(v)
    end
    return res
end

local nums = {1,2,3}
local double = map(nums, function(x) return x*2 end)
-- double = {2,4,6}
协程(Coroutine):轻量级并发
-- 创建协程
local co = coroutine.create(function()
    for i=1,3 do
        print("co: "..i)
        coroutine.yield(i) -- 暂停并返回
    end
end)

-- 恢复执行
print(coroutine.resume(co)) -- co:1 → true 1
print(coroutine.resume(co)) -- co:2 → true 2
print(coroutine.resume(co)) -- co:3 → true 3
print(coroutine.resume(co)) -- false nil(结束)

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表