2017-05-18 4 views
0

루아에서 주소록을 만들려고합니다.Lua를 사용하여 주소록 만들기

는 I는 현재 (예로서) 3 표

TAB1 = {1, 2, 3}

TAB2 = {존 마크 캐시}

tab3에 = {123, 456을 가지고 , 789}

사용자에게 이름 목록을 표시하고 사용자가 이름을 클릭하면 해당 값을 반환하고 싶습니다.

예. 사용자 마크를 선택하고 다음 프로그램이 돌아갑니다 "연락처 = 2"

"번호 = 456"당신이 어딘가에 변수에 값을 할당하지 않은 모든

+1

당신의 질문은 무엇입니까? [ask] – Piglet

+0

이것은 너무 광범위합니다. 본질적으로 사양을 말하고 특정 문제를 해결하지 않으려 고합니다. – samiles

답변

2

먼저, 존, 마크와 캐시가 nil 있습니다. 테이블에 이름을 넣으려면 문자열을 사용해야합니다.

Tab2 = {"John", "Mark", "Cassie"} 

그렇지 않으면 테이블 Tab2가 비어 있습니다.

물론 Tab1, Tab2 및 Tab3은 내용에 힌트를주지 않기 때문에 아주 영리한 변수 이름은 아닙니다. 이름에 이름, 전화 번호 및 연락처 이름을 지정하지 않으시겠습니까?

그런 다음 테이블간에 정보를 연결하는 방법에 대해 생각해야합니다.

이렇게하는 방법에는 여러 가지가 있습니다.

예제에 충실하다면 Tab2에서 "Mark"를 검색하고 색인을 얻은 다음 해당 색인을 사용하여 다른 표에서 정보를 가져와야합니다.

local selectedName = "Mark" 
for i,v in ipairs(Tab2) do 

    if v == selectedName then 
    print("Contact = " .. Tab1[i]) 
    print("Number = " .. Tab3[i]) 
    end 

end 

물론 이것은 좋지 않습니다.

Mark의 번호를 얻는 또 다른 간단한 방법은 이름을 키로 사용하는 테이블에 각 번호를 저장하는 것입니다.

print(numbers["Mark"]) 

또는 그룹 모든 정보 :

local numbers = {"John" = 123, "Mark" = 456, "Cassie" = 789} 

그런 다음 당신은 단순히 뭔가를 할 수 있습니다.

local contacts = {} 
contacts["Mark"] = {hairColour = "blond" ,number = 456} 

그럼 당신은 여전히 ​​

print(contacts["Mark"].hairColour) 
print(contacts["Mark"].number) 

이렇게 좋은 해결책이 아니다 있습니다. 기본 벽돌 몇 개를 보여 드리고자합니다.

몇 개의 자습서를 읽고 몇 권의 책과 Lua 참조 설명서를 읽으십시오. 그래서 당신은 가능한 것이 무엇인지 알게 될 것입니다.

예를 들어 루아는 여기에서 사용할 수있는 객체 지향 프로그래밍을 모방 할 수 있습니다. 또는 외부 라이브러리를 사용하여 모든 것을 데이터베이스에 저장하십시오.

하늘이 한계입니다.

네이티브 루아에서는 지원되지 않으므로 이름을 "클릭"하는 것에 대해 조언 할 수는 없습니다. 예를 들어 wxLua와 같은 GUI를 작성하려면 라이브러리가 필요합니다.

간단한 프로그램의 경우 콘솔 응용 프로그램으로 시작하거나 사용자 입력을 스크립트에 하드 코드 할 수 있습니다.

+0

고맙습니다. –

관련 문제