Lua:ipairs和pairs的区别

ipairs 和pairs在lua中都是遍历tbale的函数但是两者有区别

1.pairs遍历table中的所有的key-vale 而ipairs会根据key的数值从1开始加1递增遍历对应的table[i]值

a = {[1] = "a1", [2] = "a2", [3] = "a3", [5] = "a4", [6] = "a5",}
for key, value in ipairs(a) do
  print(key, value)
end

结果:
1    a1
2    a2
3    a3

a = {[1] = "a1", [2] = "a2", [3] = "a3", [5] = "a4", [6] = "a5",}
for key, value in pairs(a) do
  print(key, value)
end
结果:
6    a5
2    a2
3    a3
1    a1
5    a4

有一个要注意的是pairs()的一个问题,用pairs()遍历是[key]-[value]形式的表是随机的,跟key的哈希值有关系

时间: 2024-07-30 17:58:36

Lua:ipairs和pairs的区别的相关文章

Lua中ipairs和pairs的区别详解

迭代器for遍历table时,ipairs和pairs的区别: 区别一:ipairs遇到nil会停止,pairs会输出nil值然后继续下去 区别二: local a = {"Hello", "World", a = 1, b = 2, x = 10, y = 20, "Good", nil, "Bye"} -- for i,v in ipairs(a) do -- print(v) -- end for k,v in pair

ipairs与pairs的区别

ipairs 和pairs在lua中都是遍历tbale的函数可是两者有差别 1.pairs遍历table中的全部的key-vale 而ipairs会依据key的数值从1開始加1递增遍历相应的table[i]值 如:table1 = { key1 = "val1", key2 = "val2", "val3" } pairs 会优先输出没有键的值,即先输出"val3" ,再到key1 = "val1",再 k

Lua中,泛型for循环遍历table时,ipairs和pairs的区别

为了看出两者的区别,首先定义一个table: a={"Hello","World";a=1,b=2,z=3,x=10,y=20;"Good","Bye"} 使用ipairs对其进行遍历: for i, v in ipairs(a) do print(v) end 输出的结果是: HelloWorldGoodBye 可见ipairs并不会输出table中存储的键值对,会跳过键值对,然后按顺序输出table中的值. 再使用pair

lua中的pairs和ipairs区别

pairs Returns three values: the next function, the table t, and nil, so that the construction for k,v in pairs(t) do body end will iterate over all key–value pairs of table t. See function next for the caveats of modifying the table during its traver

Lua table pair和ipair区别

官方描述: ipairs (t) Returns three values: an iterator function, the table t, and 0, so that the construction for i,v in ipairs(t) do body end will iterate over the pairs (1,t[1]), (2,t[2]), ···, up to the first integer key absent from the table. pairs (

lua中ipairs与pairs区别与注意

lua中基础类   lbaselib.c 这里面定义的基础函数,函数指针数组; static const luaL_Reg base_funcs[] = { {"assert", luaB_assert}, {"collectgarbage", luaB_collectgarbage}, {"dofile", luaB_dofile}, {"error", luaB_error}, {"getmetatable&qu

lua中ipairs和pairs

两个都是可以进行迭代遍历 for i, v in ipairs( a ) do print( i, v ) end for i, v in pairs( a ) do print( i, v )end 两者通过上述遍历,都会从下标为1开始遍历,区别: ipairs遍历的时候如果遇到nil就会终止遍历,如果没有nil则遍历到尾部终止. pairs会遍历全部元素,遇到nil也不会终止,而且会遍历到-1,0等下标的元素 如下代码: function test1( a ) for i, v in ipa

LUA ipairs遍历的问题

t = { 1, 2, 3, nil, 4,} for k, v in ipairs(t) doprint(k, v)end print("---------------------------") for k, v in pairs(t) doprint(k, v)end

lua 中点和冒号的区别

1. 点和冒号的区别是, 一个是方法调用, 一个面向对象,里面有个self , 修改了原function, 不会影响到复制对象. local _M = {} function _M.one(a,b) return a + b end _M.one(1,2)  # 结果是3 local w = _M ; w.one(1,2) # 结果是3 _M  = nil w.one(1,2) # 报错 解决这个错误,所以有了: 原文地址:https://www.cnblogs.com/nika86/p/107