2011-10-28 17 views
7

Po prostu wybieranie Lua i próba znalezienia sposobu konstruowania tabel. Zrobiłem wyszukiwanie i znalazłem informacje na table.insert, ale wszystkie przykłady, które znalazłem, wydają się zakładać, że chcę tylko indeksów numerycznych, podczas gdy ja chcę dodać pary kluczy.Wstawianie par kluczy do tabeli Lua

Zastanawiam się, czy to jest ważne?

my_table = {} 
    my_table.insert(key = "Table Key", val = "Table Value") 

Robi się to w pętli i muszę być w stanie uzyskać dostęp do zawartości w dalszej części:

for k, v in pairs(my_table) do 
     ... 
    end 

Dzięki

Odpowiedz

19

Istnieją zasadniczo dwa sposoby tworzenia tabel i wypełniania ich danymi.

Najpierw należy utworzyć i wypełnić tabelę za jednym razem przy użyciu table constructor. Odbywa się to jak następuje:

tab = { 
    keyone = "first value",  -- this will be available as tab.keyone or tab["keyone"] 
    ["keytwo"] = "second value", -- this uses the full syntax 
} 

Kiedy nie wiem jakie wartości chcesz tam wcześniej, można najpierw utworzyć tabelę przy użyciu {} a następnie wypełnić go za pomocą operatora []:

tab = {} 
tab["somekey"] = "some value" -- these two lines ... 
tab.somekey = "some value" -- ... are equivalent 

Note że możesz użyć drugiego (kropki) cukru składniowego tylko wtedy, gdy klucz jest ciągiem respektującym reguły "identyfikatora" - tzn. zaczyna się od litery lub podkreślenia i zawiera tylko litery, cyfry i podkreślenie.

P.S.: Oczywiście można połączyć dwa sposoby: utworzyć tabelę z konstruktora tabeli, a następnie wypełnić resztę za pomocą operatora []:

tab = { type = 'list' } 
tab.key1 = 'value one' 
tab['key2'] = 'value two' 
+0

Dzięki za wyjaśnienie – Dayo

1

Pojawia powinno to być odpowiedź:

my_table = {} 
Key = "Table Key" 
-- my_table.Key = "Table Value" 
my_table[Key] = "Table Value" 

Zrobiłem to za mnie.

+0

tak, ale nie potrzebne'Key = Linia "Klucz tabeli". – kikito

+2

-1: Ten przykład w rzeczywistości nie działa. 'my_table.Key' to nie to samo co' my_table [Key] '. –

+1

Bardzo miło z tego, kto mnie głosował, gdy próbowałem zrozumieć nowy język. Był to krok bliżej, a później zorientowałem się, że "my_table [Key]" działa. – Dayo

Powiązane problemy