lua系统学习10-迭代器
迭代器
- 表迭代器
- 数组迭代器
- io文件行迭代器
- 字符串迭代器
表迭代器
function iteratorpairsStruct(t)
---用来读取table表的
for i, v in pairs(t) do
print("i是什么:" .. i)
print("v是什么:" .. v)
end
end
local t={["x"]="x2",["y"]="y2",["z"]="z2",2}
iteratorpairsStruct(t)
lua是弱类型语言,自由度比较大,table可以充当字典。table中元素定义key使用[""]定义,若不定义,默认以1开始延续。
i是什么:1
v是什么:2
i是什么:y
v是什么:y2
i是什么:x
v是什么:x2
i是什么:z
v是什么:z2
从输出结果中我们得到 在此结构中i为表索引,v为表的值。
从输出顺序中我们可以很明显的看到 它是无序的。这也证明了迭代器不能保证顺序。所以不要依靠迭代器做顺序相关的操作。包括在C#中
数组迭代器
local t={["x"]="x2",["y"]="y2",["z"]="z2","str1","str2","str3",[4]="str4"}
function iteratorIpairsStruct(t)
for i,v in ipairs(t) do
print("i是什么:" .. i)
print("v是什么:" .. v)
end
end
iteratorIpairsStruct(t)
ipairs用来输出数组列表的,它会从数字索引1开始向后遍历直到遇到nil结束。
IOFile迭代器
Tips:iofile是个迭代器 当每次for in会对迭代器进行Next访问下一个,每次访问会返回一行文本内容,直到Next==nil时退出循环。
function iteratorIOLine()
l = io.lines("C:\\File\\Lua\\File\\ioFile.txt");
print(l())
for line in io.lines("C:\\File\\Lua\\File\\ioFile.txt") do
print(line)
end
end
iteratorIOLine();
结果:
FirstLine
FirstLine
SecondLine
ThirdLine
字符迭代器
通过使用字符匹配迭代器 来迭代任意类型字符
function iteratorChar(s)
for c in string.gmatch(s,"[A-Z]") do
print(c)
end
end
iteratorChar("2AABBCC1")
//上面的匹配规则是按照正则表达式输入,没想到可以。
可以发现除了大写字母,文本中的其他内容全被筛选掉了
下面匹配字母与数字
function iteratorChar(s)
for c in string.gmatch(s,"[A-Za-z0-9]") do
print(c)
end
end
iteratorChar("2AaABBCC1")
结果:
2
A
a
A
B
B
C
C
1
匹配标点
function iteratorChar2(s)
for c in string.gmatch(s,"[-,.?:;'\"!']") do
print(c)
end
end
iteratorChar2("2AaABBCC1,.")
结果:
,
.
测试是不是支持完整的正则表达式规则
像这样稍微复杂的正则 gmatch就不支持了.
作者:Miracle
来源:麦瑞克博客
链接:https://www.playcreator.cn/archives/programming-life/lua/3439/
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!
来源:麦瑞克博客
链接:https://www.playcreator.cn/archives/programming-life/lua/3439/
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!
THE END
0
打赏
海报
lua系统学习10-迭代器
迭代器
表迭代器
数组迭代器
io文件行迭代器
字符串迭代器
表迭代器
function iteratorpairsStruct(t)
---用来读取table表的
for i, v in pairs(t……
文章目录
关闭