2014-12-23 7 views
5

Lua początkujący tutaj, próbując nauczyć się przez ... To jest mój czwarty dzień z Lua, więc proszę o mnie.Lua wykonać coś zapisanego w tabelach wartość klucza

Chcę utworzyć tabelę o określonych nazwach jako klucze i określone funkcje jako wartości. Nazwy kluczy reprezentują polecenia wprowadzone przez użytkownika i jeśli istnieje klucz o tej nazwie, wówczas program powinien wykonać kod zapisany w tych wartościach kluczy.

Tak na przykład, robimy tabelę z kluczami i funkcji wewnątrz wartości klucza:

local t = { 
    ["exit"] = quitGame, 
    ..., 
    ... 
} 

i mamy także funkcję na przykład:

function quitGame() 
    print("bye bye") 
    os.exit() 
end 

więc teraz robimy:

userInput = io.read() 

for i,v in pairs(t) do 
    if userInput == i then 
     --now here, how do I actually run the code that is stored in that key value (v)? 
    end 
end 

Mam nadzieję, że rozumiesz, co próbuję zrobić.

Odpowiedz

3

Masz tabelę z kluczami według wartości. Nie ma potrzeby pętli, aby znaleźć klucz, który chcesz. Po prostu sprawdź to bezpośrednio. Następnie wybierz wartość, którą otrzymasz.

local fun = t[userInput] 
if fun then 
    fun() 
end 
+0

Dokładnie tego potrzebowałem. Dzięki! Jeszcze jedno pytanie: w jaki sposób zatrzymać program, gdy program wywołuje funkcję z tabeli? Na przykład, jeśli chcę, aby funkcja wydrukowała coś, a następnie poczekać jeszcze raz na kolejne dane użytkownika? – thee

+0

@thee Ostatecznie to zależy od twojego środowiska, ale w autonomicznej (na przykład) pętli jak 'while true do userInput = io.read() ... done' będzie działać. –

Powiązane problemy