Lua中迭代器的使用技巧

2021-05-22 03:25:06 字數 1217 閱讀 4830

迭代器的使用技巧

使用排序好的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...