본문 바로가기

Coding Note

[Lua] table


--lua table : 자료관리에 가장 강력한 연관배열
--배열처럼도 쓰고 구조체처럼도 쓴다.
t = {} --이렇게 선언.
t[0] = 10
t[1] = "alpha"
t[2] = true
t[3] = nil

for i=0, 3 do
 print(t[i])
end

--이렇게 함수를 객체로 저장할 수 있음
t2 = {}
t2.name = "table name"
function pt(a)
 print("print argument : "..a)
end
t2.ptfunc = pt
t2.ptfunc(t2.name)

------ 테이블의 기본함수들
--table.getn(table)
print("table.getn(tb) : "..table.getn(t))

--table.sort(table [, comp])
numt = {}
numt[1]=43
numt[2]=10
numt[3]=59
numt[4]=1
table.sort(numt) --두번째인자는 갑비교루틴
 --특이한건, 인덱스 1부터 정렬하고 0번째껀 무시함

for i=0, table.getn(numt) do
 print(numt[i])
end

--추가, 제거
--table.insert(numt, 3, "inserted")
--print(numt[2],numt[3],numt[4])
--table.remove(numt,3)
--print(numt[2],numt[3],numt[4])

--특이한거는 pairs 이놈
--반복문에서 테이블의 모든요소에 접근할때 사용되고, 구조체
--모든멤버에 접근할때 유용
--in 키워드랑 같이 사용한다.
tb={
 id=1,
 describe="this is table struct",
 isStruct = true,
 alpabetic_arrange = "tb storage as alpabeticaly",
}
print("\npairs test")
for i, v in pairs(tb) do
 print(":"..tostring(v))
end

--하나 알아낸건, 테이블에 요소들은
--numaric type(실수, 부울)이 앞에 저장되고
--문자열은 뒤에 저장되며
--저장될땐 같은타입들 내에서 변수명 알파벳 순이라는거 ㅋ

--lua 의 table은 진짜 강력한 것 같다.

'Coding Note' 카테고리의 다른 글

[C++] C++ callback and delegate  (0) 2012.05.27
[Data Structure] Red Black Tree  (0) 2012.05.27
[Lua] 함수  (0) 2012.03.19
[Lua] first  (1) 2012.03.18
[CUDA] kernel 호출방법  (0) 2012.03.14