欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在lua中,ipairs和pairs的区别

程序员文章站 2024-03-17 23:32:52
...

在lua中,ipairs和pairs的区别:
1.
ipairs是按(索引从小到大)顺序输出的。
pairs是无序输出的。
2.
ipairs从索引1开始,到索引不是整数为止,其中key为非整数(即key为字符串、浮点数等)会被跳过。
pairs会遍历表中所有key。

function table_length(t)
  local leng = 0
  for k, v in pairs(t) do
  	leng = leng+1
  end
  return leng
end

local t1 = {name = "table1"}
t1[0] = "v_0"
t1[1] = "v_1"
t1[1.1] = "v_1.1"
table.insert(t1, "v_a")
table.insert(t1, "v_b")
t1.count_ButJustMaxIndex = #t1
t1.count = table_length(t1) + 1

print("i,v in ipairs(t1):")
for i,v in ipairs(t1) do
	print(i,v)
end

print("============")
print("k,v in pairs(t1): ")
for k,v in pairs(t1) do
	print(k,v)
end

-- output:
-- i,v in ipairs(t1):
-- 1	v_1
-- 2	v_a
-- 3	v_b
-- ============
-- k,v in pairs(t1): 
-- 1	v_1
-- 2	v_a
-- 3	v_b
-- 0	v_0
-- 1.1	v_1.1
-- name	table1
-- count	8
-- count_ButJustMaxIndex	3