pairs 和 ipairs异同
2024-08-28 10:52:35
同:都是能遍历集合(表、数组)
异:ipairs 仅仅遍历值,按照索引升序遍历,索引中断停止遍历。即不能返回 nil,只能返回数字 0,如果遇到 nil 则退出。它只能遍历到集合中出现的第一个不是整数的 key。
pairs 能遍历集合的所有元素。即 pairs 可以遍历集合中所有的 key,并且除了迭代器本身以及遍历表本身还可以返回 nil
例子
local tabFiles = {
[] = "test2",
[] = "test3",
[] = "test1"
} for k, v in ipairs(tabFiles) do --输出"test2",在key等于2处断开
print(k, v)
end
例子
local tabFiles = {
[] = "test2",
[] = "test3",
[] = "test1"
} for k, v in ipairs(tabFiles) do --[[什么都没输出,为什么?因为控制变量初始值是按升序来遍历的,当key为1时,value为nil,此时便停止了遍历, 所有什么结果都没输出]]--
print(k, v)
end
例子
local tabFiles = {
[] = "test2",
[] = "test3",
[] = "test1"
} for k, v in pairs(tabFiles) do --输出2 test2, test3, test1
print(k, v)
end
例子
local tabFiles = {"alpha", "beta", [] = "no", ["two"] = "yes"} for i,v in ipairs(tabFiles ) do --输出前三个 备注:因为第四个key不是整数
print( tabFiles [i] )
end for i,v in pairs(tabFiles ) do --全部输出
print( tabFiles [i] )
end
字符串分割函数
function split(str,delimiter)
local dLen = string.len(delimiter)
local newDeli = ''
for i=,dLen, do
newDeli = newDeli .. "["..string.sub(delimiter,i,i).."]"
end local locaStart,locaEnd = string.find(str,newDeli)
local arr = {}
local n =
while locaStart ~= nil
do
if locaStart> then
arr[n] = string.sub(str,,locaStart-)
n = n +
end str = string.sub(str,locaEnd+,string.len(str))
locaStart,locaEnd = string.find(str,newDeli)
end
if str ~= nil then
arr[n] = str
end
return arr
end
t = split("php,js", ",")
for k, v in pairs(t) do
print(k, v)
end
输出
php
js
最新文章
- 【转载】ReactiveX 的理念和特点
- Bootstrap CSS 栅格、代码和表格
- 第二周:If判断语句程序当中的作用简介
- SQL Pass北京举行2014年第一次线下活动
- angularjs学习笔记—工具方法
- 使用Redux管理你的React应用
- 51nod 1134 最长递增子序列
- Wormholes(Bellman-ford)
- flex 4 Filters
- Codeforces Round #275 (Div. 2)
- java画图输出到磁盘
- 如何使用Instruments诊断App(Swift版):起步-b
- djangoPOST请求403 forbidden
- Eclipse 快捷键整理
- java导出数据Excel总结
- Android中的Fragment页面切换和selector选择器
- 在Tomcat中采用基于表单的安全验证
- asp.net core 发布centos 7 遇到的坑
- getString与optString的区别
- window.location各属性的值