Một bảng trong Lua là một tập hợp ánh xạ khóa-giá trị với các khóa duy nhất. Các cặp được lưu trữ theo thứ tự tùy ý và do đó bảng không được sắp xếp theo bất kỳ cách nào.
Điều bạn có thể làm là lặp lại qua bảng theo một số thứ tự. Số pairs
cơ bản cho bạn không đảm bảo thứ tự mà các phím được truy cập. Đây là một phiên bản tùy biến của pairs
, mà tôi gọi là spairs
vì nó lặp trên bàn theo một thứ tự sắp xếp:
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
Dưới đây là một ví dụ về sử dụng các chức năng như:
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
Nguồn
2013-03-29 16:01:40
thể trùng lặp của [ sao chép dữ liệu từ bảng đến antoher theo thứ tự] (http://stackoverflow.com/questions/5153642/copying-data-from-table-to-antoher-with-order) – finnw
Bảng không được sắp xếp theo thứ tự mảng hay gì đó. Nó không có thứ tự biểu hiện. – texasbruce