2014-12-23 2 views
5

루아 초보자는 여기 배우기 위해 노력하고 있습니다 ... 루아와 함께하는 4 일째입니다. 그러니 나와 함께 맨발로.루아는 테이블에 저장된 어떤 것을 실행 키 값

특정 이름을 키로하고 특정 기능을 값으로 사용하여 테이블을 만들고 싶습니다. 키 이름은 사용자가 입력하는 명령을 나타내며 해당 이름의 키가 존재하면 프로그램은 해당 키 값에 저장된 코드를 실행해야합니다.

그래서 예를 들어, 우리는 키 값의 내부 키와 기능을 표합니다

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

우리는 또한 예를 들어 기능이 : 우리가 지금 이렇게

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 

내가 뭘 하려는지 알기를 바랍니다.

답변

3

값으로 키 테이블이 있습니다. 원하는 키를 찾으려면 반복 할 필요가 없습니다. 직접 찾아보십시오. 그런 다음 값을 다시 호출하십시오.

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

정확히 내가 필요한 것입니다. 감사! 한 가지 더 질문하지만, 테이블의 함수가 호출 될 때 프로그램이 종료되지 않게하려면 어떻게해야합니까? 예를 들어 함수가 뭔가를 출력하고 다음 사용자 입력을 다시 기다리고 싶다면? – thee

+0

@thee 궁극적으로 환경에 따라 다르지만 독립 실행 형 (예 :'true do userInput = io.read() ... done'과 같은 루프가 작동합니다. –