首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

OpenResty(Lua)笔记总结(2)

OpenResty(Lua)笔记总结(2)

Lua 中 pairs 和 ipairs 的 区 别

这个新手很容易犯的错,标准库提供了集中迭代器,包括迭代文件每行的(io.lines),迭代table元素的(pairs),迭代数组元素的(ipairs),迭代字符串中单词的,由于在 lua 内部实际采用 哈希表保存键值对、数组保存普通值,table和数组还是有区别的,简单这样理解吧,哈希表是key value类型的, 数组是索引数组,所以在lua中

    pairs  可以迭代索引数组和哈希类型的数组

    ipairs 可以迭代索引数组,哈希类型的数组不行

    首先他们两个效率非常高,比for,while等高很多;ipairs比pairs效率还要高

举例:

    local arr_1 = {1,2,3,4,5,6,7,8,9,0}

    local arr_2 = {name = "ybl" , age = 22 , sex = "男" , likes = "篮球,跑步,健身"}

    local arr_3 = { first="red", "blue", third="green", "yellow"}

    针对arr_1,pairs和ipairs都可以迭代,推荐ipairs

    针对arr_2,pairs迭代,ipairs空值

    针对arr_3,pairs迭代,ipairs空值


非空判断

这里的ken狠多,用如下封装的方法就可以,如果你想了解更多,可查看OpenResty最佳实践

    function isTableEmpty(t)

            if t == nil or next(t) == nil then

                         return true

             else

                          return false

              end

    end
返回列表