迭代器的使用技巧
使用排序好的key迭代
你曾有過這樣的需求麼
fork,v
inpairs(t)
do
按照排序的key來遍歷表.
function sortedpairs(t,comparator)local sortedkeys
={};
table.
foreach
(t, function(k,v) table.insert(sortedkeys,k) end);
table.sort(sortedkeys,comparator);
local i =0
; local function _f(_s,_v)
i =i
+1; local k
=sortedkeys[i];
if(k) then
return
k,t[k];
endend
return
_f,nil,nil;
end
加上這段**, 你就可以這麼做了.
fork,v
insortedpairs(t)
do
這便達到了你的目的, 假定key是可以使用'<'比較排序的, 例如, key全部都是數字或者全部都是字串.
你可以自定義比較器函式(comparator function)來排序(table.sort參見lua手冊). 主要就是包括2個引數, 如果第乙個引數在第二個引數前則返回true.
示例: 基於忽略大小寫的字母字典排序迭代.
function f(a,b)return
string
.lower(a)
<
string
.lower(b); end
fork,v
insortedpairs(t, f)
do
示例: 基於表的自定義欄位cost值的降序排序迭代.
function f(a,b)return
t[a].cost
>
t[b].cost; end
fork,v
insortedpairs(t, f)
do
Lua中的迭代器
1 lua標準庫中提供了4種常用的迭代器 1 用於迭代檔案中每行的io.lines 2 迭代字串中單詞的string.gmatch 3 迭代table元素的pairs 4 迭代陣列元素的iparis 相對於數字型for迴圈,後兩者又稱為泛型for迴圈 2 pairs與ipairs paris遍歷ta...
lua中的迭代器分析
1.所謂 迭代器 就是一種可以遍歷某個集合中所有元素的機制,在lua中迭代器通常表示為函式,而具體的實現有很多種。整個迭代的過程基本如下 首先是通過迭代器工廠建立迭代器 然後每次呼叫這個迭代器時,它就會從指定的集合中返回下乙個元素 直到最後乙個元素返回後,迭代器就會返回nil,以此表示迭代結束。2....
Lua迭代器的實現
lua迭代器才有放回個函式的方法,for in的結構會迴圈呼叫該函式,直到第乙個放回值為nil時,就會終止迴圈。其中迭代器中的函式會利用upvalue的概念,如下面 變數i就是放回函式的upvalue,返回函式體中不斷的對i變數做 1處理,i的值就是從0,1,2,3不斷的往上加的。local ite...