苦苦搜尋.jpg
前言
今天這個函數(shù)也是涉及到遍歷功能的,與函數(shù)ipairs()
是同胞兄弟,但是有一點(diǎn)點(diǎn)區(qū)別季希,并且和上一章所講的next
函數(shù)有著密切的關(guān)系,通常和函數(shù)for
搭配幽纷,接下來我們來看一下這個函數(shù)的使用方法怜跑。
內(nèi)容
pairs()
- pairs(t)
- 解釋:這個函數(shù)返回三個值,他們分別是一個迭代函數(shù)
next
腮恩、一個表t
和nil
养晋,使用構(gòu)造式for i,v in pairs(t) do body end
將會遍歷表t
中所有的元素對,要注意一下next
函數(shù)的在遍歷期間修改table的警告信息收恢。
Usage
- 首先我們新建一個文件將文件命名為pairstest.lua然后編寫代碼如下:
-- 定義一個table
local tab = {
35,
[3] = 45,
[8] = 101;
x = 100;
y = 230;
}
-- 打印查看table
print("\nthe table is", tab)
-- 查看函數(shù)pairs的返回值
print("\nthe return value of pairs is", pairs(tab))
-- 正常使用pairs函數(shù)
print("\nuse pairs resault:")
for k,v in pairs(tab) do
print(k,v)
end
-- 先取得函數(shù)pairs返回值
local func, new_tab, key = pairs(tab)
print("\nchange key use pairs resault:")
-- 改變key的值來調(diào)用遍歷函數(shù)
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的值來調(diào)用遍歷函數(shù)
for i,v in func, change_tab, nil do
print(i,v)
end
- 運(yùn)行結(jié)果
base_pairs.png
總結(jié)
- 要注意這個函數(shù)和函數(shù)
ipairs()
的區(qū)別武学,這個函數(shù)是可以打印table中所有值的,但是ipairs()
只能打印索引為連續(xù)數(shù)字的值伦意。 - 這個函數(shù)一樣三個返回值火窒,但是要之一第三個返回值是
nil
,其實(shí)這個返回值也是給next
用的驮肉,當(dāng)next
函數(shù)的索引為nil
時熏矿,正好返回表中第一個值。 - 從例子我們可以看到离钝,利用
for
循環(huán)票编,遍歷所需的table和索引也是可以改變的。