Asocjatywne sortowanie tabeli według wartości w Lua
Mam tabelę wartości key =>, którą chciałbym posortować w Lua. Wszystkie klucze są liczbami całkowitymi, ale nie są kolejne (i mają znaczenie). Wygląda na to, że jedyna funkcja sortowania Luatable.sort
, który traktuje tabele jako proste tablice, odrzucając oryginalne klucze i ich powiązanie z określonymi elementami. Zamiast tego zasadniczo chciałbym móc korzystaćPHPasort()
funkcjonować.
Co ja mam:
items = {
[1004] = "foo",
[1234] = "bar",
[3188] = "baz",
[7007] = "quux",
}
Czego chcę po operacji sortowania:
items = {
[1234] = "bar",
[3188] = "baz",
[1004] = "foo",
[7007] = "quux",
}
Jakieś pomysły?
Edytować: Opierając się na odpowiedziach, założę, że jest to po prostu dziwne dziwactwo konkretnego osadzonego interpretera Lua, z którym pracuję, ale we wszystkich moich testach,pairs()
zawsze zwraca elementy tabeli w kolejności, w jakiej zostały dodane do tabeli. (tj. dwie powyższe deklaracje będą się iterować inaczej).
Niestety, ponieważ nie jest to normalne zachowanie, wygląda na to, że nie mogę dostać tego, czego potrzebuję; Lua nie ma wbudowanych niezbędnych narzędzi (oczywiście), a osadzone środowisko jest zbyt ograniczone, aby móc je obejść.
Mimo wszystko, dzięki za pomoc, wszystko!