Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

Lua 게시판
Lua 스크립트 게시판입니다.
[10] 루아 연관 배열(associative array)에 대한 질문입니다.
즈티브삽스 [horudoga] 10119 읽음    2012-06-14 04:12
볼랜드 포럼에 루아 관련 게시판이 없어서 자유 게시판에 일단 글을 씁니다.
볼랜드 포럼에서 루아 관련 게시판을 만들기 힘들다면, 하다못해 스크립트 언어를 다루는 게시판이 있었으면 좋겠어요.

현재 사이텍 미디어 출판사에서 출판한 "루아를 이용한 민첩하고 효과적인 게임 개발"이란 책에서 다음 예제가 나오는데 그걸 살짝 수정했습니다.

myData = {}
myData.name = "김두한"
myData.class = "마법사"
myData.str = math.random(3, 18)
myData.dex = math.random(3, 18)

myData[1] = 17
myData[2] = 34
myData[3] = 26

print("\nPrint out the myData elements:\n")
for index = 1, table.getn(myData) do
	print(myData[index]) -- 17, 34, 26
end


여기서 제가 궁금한건, myData에 "김두한"과 "마법사"라는 데이터가 저장이 되긴 된건가요? myData는 테이블(일종의 배열)인데 for 루프 써서 출력을 하니까 1번, 2번, 3번 색인에 각기 저장된 17, 34, 26 값만 출력이 되네요.

"김두한", "주먹왕"은 어디에 저장된거고 어떻게 사용하는거죠?
즈티브삽스 [horudoga]   2012-06-14 04:15 X
추가 질문입니다.
루아에서 마침표 색인(key)는 오직 문자열만 저장할 수 있다고 하는데,
myData.str = math.random(3, 18)
myData.dex = math.random(3, 18)은 number 아닌가요? ; 이것들은 왜 에러가 나지 않는거죠?
남병철.레조 [lezo]   2012-06-14 09:58 X
만일 에러가 났다면... 해당 라이브러리가 로딩되지 않아서 그런게 아닐까하네요..
오랑캐꽃 [oranke]   2012-06-14 11:30 X
자게란에 질문이라 좀 거시기하기는 하지만... 일단 답변을 달아봅니다.
우답부터 던지면, "김두환"은 myData.name 에 저장하셨으니 myData.name 으로 참조하셔야죠. ^^;

이 외의 방법으로... 테이블에 점 연산자로 할당한 값은
다음과 같이 해당 키 문자열을 배열의 첨자값으로 접근할 수 있습니다.

print(myData["name"])
print(myData["class"])

그리고... table.getn() 의 경우는 숫자형 키 중 가장 큰 값을 내놓게 되지요.
말씀하신 경우에는 3이 되구요. 루아 5.1 부터는 # 연산자로 동일한 값을 얻을 수도 있습니다.

print(#myData)


이렇게 테이블의 키값으로 문자열과 숫자값이 마구 뒤섞여있는 경우...
for문 등으로 모든 요소에 접근하려면 pairs() 라는 함수를 사용할 수 있습니다.

for KeyStr in pairs(myData) do
  print(KeyStr, myData[KeyStr])
end;

그리고 루아의 쩜 연산자 색인은 문자열만 가능하다는 이야기는,
담기는 내용이 아닌 색인 자체에 대한 언급일 거에요.
실제 루아의 테이블은 루아에서 사용되는 자료형이라면 어떤 것이건 담을 수 있으니까요.
오랑캐꽃 [oranke]   2012-06-14 11:31 X
헐~ 댓글 달고 나니 레조님이 이미 답변 주셨네요.
지우려다보니 귀찮기도 하고 아깝기도 해서 그냥 살려둡니다. ^^
오랑캐꽃 [oranke]   2012-06-14 11:38 X
혹시 디버깅이 필요하시다면... 만들다가 아무 호응도 없어 때려치운 허접 디버거가 있습니다.
가끔씩 유용해요~~ ^^;

http://oranke.tistory.com/81
Lyn [tohnokanna]   2012-06-14 14:29 X
저때 참 잘만들었다 생각했던 게임오븐 좉ㅋ망ㅋ
남병철.레조 [lezo]   2012-06-14 16:12 X
아.. 게임오븐.. 오랜만에 듣는군.. ㅋ

+ -

관련 글 리스트
10 루아 연관 배열(associative array)에 대한 질문입니다. 즈티브삽스 10119 2012/06/14
11     Re:루아 연관 배열(associative array)에 대한 질문입니다. 남병철.레조 32824 2012/06/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.