Board logo

标题: OpenResty(Lua)笔记总结(2) [打印本页]

作者: look_w    时间: 2019-2-19 15:57     标题: 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




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0