Lua'daki bir tablo, benzersiz anahtarlarla bir dizi anahtar/değer eşleştirmesidir. Çiftler rastgele sırayla saklanır ve bu nedenle tablo hiçbir şekilde sıralanmaz.
Yapabilecekleriniz, bazı sırada tablonun üzerine yinelemek. Temel pairs
, anahtarların ziyaret edildiği sırayla ilgili herhangi bir garanti vermez. İşte
function spairs(t, order)
-- collect the keys
local keys = {}
for k in pairs(t) do keys[#keys+1] = k end
-- if order function given, sort by it by passing the table and keys a, b,
-- otherwise just sort the keys
if order then
table.sort(keys, function(a,b) return order(t, a, b) end)
else
table.sort(keys)
end
-- return the iterator function
local i = 0
return function()
i = i + 1
if keys[i] then
return keys[i], t[keys[i]]
end
end
end
böyle fonksiyonun kullanımına ilişkin bir örnektir: Burada sıralı bir şekilde masaya üzerinde dolaşır çünkü
spairs
denilen
pairs
özelleştirilmiş bir versiyonudur ve
HighScore = { Robin = 8, Jon = 10, Max = 11 }
-- basic usage, just sort by the keys
for k,v in spairs(HighScore) do
print(k,v)
end
--> Jon 10
--> Max 11
--> Robin 8
-- this uses an custom sorting function ordering by score descending
for k,v in spairs(HighScore, function(t,a,b) return t[b] < t[a] end) do
print(k,v)
end
--> Max 11
--> Jon 10
--> Robin 8
olası yinelenen [ tablodan veriyi sipariş ile kopyalamak için] (http://stackoverflow.com/questions/5153642/copying-data-from-table-to-antoher-with-order) – finnw
Tablo dizi veya benzeri bir şey değil. Belirtilen bir emri yok. – texasbruce