前言
今天这个函数也是涉及到遍历功能的,与函数ipairs()
是同胞兄弟,但是有一点点区别,并且和上一章所讲的next
函数有着密切的关系,通常和函数for
搭配,接下来我们来看一下这个函数的使用方法。
内容
pairs()
- pairs(t)
- 解释:这个函数返回三个值,他们分别是一个迭代函数
next
、一个表t
和nil
,使用构造式for i,v in pairs(t) do body end
将会遍历表t
中所有的元素对,要注意一下next
函数的在遍历期间修改table的警告信息。
Usage
- 首先我们新建一个文件将文件命名为pairstest.lua然后编写代码如下:
-- 定义一个table
local tab = {
35,
[3] = 45,
[8] = 101;
x = 100;
y = 230;
}
-- 打印查看table
print("\nthe table is", tab)
-- 查看函数pairs的返回值
print("\nthe return value of pairs is", pairs(tab))
-- 正常使用pairs函数
print("\nuse pairs resault:")
for k,v in pairs(tab) do
print(k,v)
end
-- 先取得函数pairs返回值
local func, new_tab, key = pairs(tab)
print("\nchange key use pairs resault:")
-- 改变key的值来调用遍历函数
for i,v in func, new_tab, "x" do
print(i,v)
end
local change_tab = {
"c",
"lua"
}
print("\nchange new_tab use pairs resault:")
-- 改变new_tab的值来调用遍历函数
for i,v in func, change_tab, nil do
print(i,v)
end
- 运行结果
总结
- 要注意这个函数和函数
ipairs()
的区别,这个函数是可以打印table中所有值的,但是ipairs()
只能打印索引为连续数字的值。 - 这个函数一样三个返回值,但是要之一第三个返回值是
nil
,其实这个返回值也是给next
用的,当next
函数的索引为nil
时,正好返回表中第一个值。 - 从例子我们可以看到,利用
for
循环,遍历所需的table和索引也是可以改变的。