Próbuję dowiedzieć się równowartość:Jak mogę dołączyć do tabeli w Lua
foo = []
foo << "bar"
foo << "baz"
nie chcę mieć wymyślić indeksu zwiększany. Czy istnieje prosty sposób na zrobienie tego?
Próbuję dowiedzieć się równowartość:Jak mogę dołączyć do tabeli w Lua
foo = []
foo << "bar"
foo << "baz"
nie chcę mieć wymyślić indeksu zwiększany. Czy istnieje prosty sposób na zrobienie tego?
Szukasz funkcji insert
, znajdującej się w sekcji głównej biblioteki o numerze table
.
foo = {}
table.insert(foo, "bar")
table.insert(foo, "baz")
Ach tak: foo = {}; table.insert (foo, "bar"); table.insert (foo, "baz") – drewish
Cholera, odpowiedziałeś, używając funkcji 'insert' podczas pisania odpowiedzi. *Wielkie umysły myślą podobnie*. :-) – cybermonkey
Dokładnie. Nie potrzebujesz również średników, ale możesz je mieć, jeśli chcesz. – rsethc
foo = {}
foo[#foo+1]="bar"
foo[#foo+1]="baz"
To działa, ponieważ operator #
oblicza długość listy. Pusta lista ma długość 0, itd
Jeśli używasz Lua 5.3+, można zrobić niemal dokładnie to, czego chciał:
foo = {}
setmetatable(foo, { __shl = function (t,v) t[#t+1]=v end })
_= foo << "bar"
_= foo << "baz"
Wyrażenia nie są stwierdzenia zawarte w Lua i muszą być używane w jakiś sposób.
Proszę wyjaśnij, dlaczego twoja metoda działa. – cybermonkey
Nie jestem zakochany w tym, jak wygląda, ale miło wiedzieć, że działa. – drewish
Jest nieco szybki niż "table.insert". – Tim
bym osobiście skorzystać z funkcji table.insert
:
table.insert(a,"b")
To pozwala uniknąć konieczności iteracyjne nad całą tabelę zatem oszczędzanie cennych zasobów, takich jak pamięć i czas.
Cała dokumentacja jest dostępna pod adresem http://www.lua.org/manual/5.2/ – rsethc
o, to naprawdę pomocne. google ciągle wskazywał mi stronę http://www.lua.org/pil/2.5.html, która jest w zasadzie bezużyteczna. – drewish