Lua

2014-12-23 29 views
5

Lua masalarda saklanan bir şeyi burada çalıştırıyor, yaparak öğrenmeye çalışıyor ... Bu Lua ile benim 4. günüm, bu yüzden lütfen benimle çıplak ol.Lua

Anahtar olarak belirli isimler ve değerler olarak belirli işlevler içeren bir tablo oluşturmak istiyorum. Anahtar adları, bir kullanıcının girdiği komutları gösterir ve bu ada sahip bir anahtar varsa, program bu tuş değerlerinde saklanan kodu yürütmelidir.

Yani, örneğin, biz anahtar değerine içerisinde anahtarlar ve işlevleri içeren bir tablo yapmak:

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

ve biz de örneğin bir işlevi vardır: Yaptığımız şimdi çok

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

:

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 

Umarım ne yapmaya çalıştığımı anlarsınız.

cevap

3

Değere göre bir tablonuz var. İstediğiniz anahtarı bulmak için döngüye gerek yok. Sadece doğrudan bak. Ardından geri aldığınız değeri arayın.

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

Tam olarak ihtiyacım olan şey budur. Teşekkürler! Bir soru daha olsa da, tablodan bir işlev çağrıldığında programın çıkmasını nasıl engellerim? Örneğin, işlevin bir şey yazdırmasını ve sonraki kullanıcı girdisi için tekrar beklemesini istiyorsam? – thee

+0

@thee Sonuçta bu sizin ortamınıza bağlıdır, ancak bağımsız olarak (örneğin) bir döngü gibidir; true ise userInput = io.read() ... done' çalışacaktır. –