比方說,我在Lua的字典(即包含字符串類型的索引Lua的表),象這樣:是否有可能在Lua中創建迭代器來迭代字典?
local my_dictionary = {a = 123; b = 321; c = 456; d = 654};
我所要做的是創建一個迭代器功能,可以遍歷表即使它的索引是字符串類型;有點像對,然而無論何時我試圖調用next()來獲取下一個索引,值都只返回索引,如果索引是int類型的值。我有一個想法可能是調用(索引):byte(1,-1)並加上int的元組,並將其用作一種假冒索引,只是爲了跟蹤索引,但我不認爲這將在下一個工作。這基本上是我到目前爲止有:
local function each(list)
if #list > 0 then
local function my_itr(lst, ind)
return next(lst, ind);
end
return my_itr, List, 0;
end
return function() end, nil, nil;
end
這僅適用於與詮釋指數(數組表)的表,所以我想知道是否有人可以幫助我。 謝謝。 編輯:爲了使這個少模糊這裏有一個例子一塊的什麼,我試圖完成代碼:
local mytable = {a = 123; b = 321; 3, 2, 1, c = "bca"};
for i,v in each(mytable) do
print(i,v);
end
它應該輸出:
>a 123
>b 321
>1 3
>2 2
>3 1
>c bca
輸出就不必在確切的順序。
你的問題很難理解。我可以猜測你想按照字典順序迭代字符串鍵,但是仍然可以發表一個你想要實現的例子,例如一張表,一段代碼和所需的輸出。 – iehrlich
當然,我只是編輯它;謝謝 –
你上面說過,你只想返回int索引,但是你想要的輸出顯示與'pairs()'相同的行爲。這是什麼?順便說一下,這個頁面顯示瞭如何實現'pairs':https://www.lua.org/pil/7.3.html。 – luther