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 |