1. í…Œì´ë¸” 기초 ì˜¤ëŠ˜ì€ ë£¨ì•„ë§Œì´ ê°–ê³ ìžˆëŠ” ë…특한 ìžë£Œêµ¬ì¡° í…Œì´ë¸”ì— ëŒ€í•´ì„œ ì•Œì•„ë³´ê² ìŠµë‹ˆë‹¤. 루아ì—서 í…Œì´ë¸”ì€ í•´ì‰¬ í…Œì´ë¸”ê³¼ ê°™ì€ ìžë£Œ 구조 ì´ìƒì˜ ì—í• ì„ í•©ë‹ˆë‹¤. í…Œì´ë¸”ì€ ê°ì²´ì§€í–¥ì 프로그래ë°ì„ 가능하게 해주는 ì—í• ë„ ê²¹í•©ë‹ˆë‹¤. 무슨 ì´ì•¼ê¸°ì¸ì§€ëŠ” 천천히 설명 ë“œë¦¬ê² ìŠµë‹ˆë‹¤. ìš°ì„ ê°„ë‹¨í•˜ê²Œ ìžë£Œêµ¬ì¡°ë¡œì¨ì˜ í…Œì´ë¸”ì„ ì‚´íŽ´ ë³´ê² ìŠµë‹ˆë‹¤. 해쉬 í…Œì´ë¸”로 사용하기 > HashT = {["a"] = 1, ["b"] = 2, ["c"] = 3, ["d"] = 4 } > print( Hasht["a"] ) 1 > print( Hasht["b"] ) 2 여기서 ["a"] 는 키 값으로 사용 ë˜ì—ˆê³ 1는 ["a"]ì— ë§´í•‘ ëœ ê°’ìœ¼ë¡œ 사용 ë˜ì—ˆìŠµë‹ˆë‹¤. 키 ê°’ì€ ë‹¨ìˆœížˆ 값으로 ë§ê³ ë³€ìˆ˜ë¡œë„ ì‚¬ìš© í• ìˆ˜ 있습니다. > HashT2 = { a = 1, b = 2, c= 3} > print ( HashT2.a ) 1 ëŒ€ì‹ ê°’ìœ¼ë¡œ í‚¤ê°’ì„ ì‚¬ìš©í• ë•Œì™€ëŠ” 다르게 변수ì—서는 í…Œì´ë¸”ëª…ì— . ë¡œë„ ë³€ìˆ˜ë¥¼ ì°¸ì¡°í• ìˆ˜ 있습니다. HashT2["a"] ë¡œë„ ì°¸ì¡° 가능합니다. 만약 í…Œì´ë¸”ì„ ë§Œë“¤ 때 í‚¤ê°’ì´ ì—†ë‹¤ë©´ 어떻게 ë 까요? 그럼 ì •ìˆ˜í˜•ìœ¼ë¡œ 순차ì 으로 번호가 매겨집니다. 예를 들면 다ìŒê³¼ 같습니다. > Fruit = { "apple","orange","banana" } > print ( Fruit[1] ) apple ê·¸ë ‡ê¸° ë•Œë¬¸ì— í…Œì´ë¸”ì€ ë°°ì—´ë¡œë„ ì‚¬ìš© ë 수 있습니다. 그럼 ë°°ì—´ì— ì¶”ê°€ì 으로 insert í•˜ê³ remove í•´ ë³´ê² ìŠµë‹ˆë‹¤. > Fruit[ #Fruit + 1 ] = "grape" -- Fruit ì˜ ì•„ì´í…œ 갯수를 얻어 + 1ì„ í•´ì„œ 마지막 첨ìžë¥¼ 구해 ê°’ì„ ëŒ€ìž…í•œë‹¤. > print( Fruit[4] ) grape ì´ë ‡ê²Œ 귀찮게 추가를 í• ìˆ˜ë„ ìžˆì§€ë§Œ, 간단히 table.insert(Fruit,"kiwi") 처럼 간단히 í• ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì‚ì œëŠ” table.remove(Fruit,4) 로 4번째 ì•„ì´í…œì„ ì‚ì œ í• ìˆ˜ 있습니다. > table.insert(Fruit,"mango") > print(Fruit[6]) mango > table.remove(Fruit,6) > print(Fruit[6]) nil ê·¸ë¦¬ê³ ë§Œì•½ 배열로 사용하는 í…Œì´ë¸” ë‚´ì˜ ê°’ë“¤ì„ ì •ë ¬í•˜ê³ ì‹¶ìœ¼ë©´ table.sort를 사용하면 ë©ë‹ˆë‹¤. > table.sort(Fruit) > for i = 1,#Fruit do print(Fruit[i]) end apple banana kiwi orange 2. í…Œì´ë¸”ê³¼ 함수 지금까지는 간단히 í…Œì´ë¸”ì„ ìžë£Œêµ¬ì¡°ë¡œ 사용하였는ë°, 루아ì—서는 ê±°ì˜ ëª¨ë“ ê²ƒì´ í…Œì´ë¸”ì˜ í‚¤ë¡œ 사용 ë 수 있기 ë•Œë¬¸ì— í…Œì´ë¸”ê³¼ 함수를 ì—°ê²° í• ìˆ˜ 있습니다. >function Car(name) >> local car_name = name >> local function Go() >> print( car_name .. " is running" ) >> end >> return { Go = Go } -- 여기서 local function Go를 반환하므로 Carì— ëŒ€í•œ 맴버 함수로 ì‚¬ìš©í• ìˆ˜ 있다. >> end > myCar = Car("SM3") -- Car ë¼ëŠ” 함수를 통해 í…Œì´ë¸”ì„ ë§Œë“¤ê³ í…Œì´ë¸” ë‚´ì˜ í•¨ìˆ˜ë¥¼ 통해 ê°ì²´ 지향 코드 작성 > myCar.Go() SM3 is running > myCar:Go() SM3 is running ìœ„ì˜ ì˜ˆì œë§Œìœ¼ë¡œ ê°ì²´ 지향ì´ë¼ê³ 부르기 좀 부족한 ë©´ì´ ìžˆëŠ” 것 같네요. 그럼 좀 ë” ê°ì²´ì§€í–¥ì 으로 바꿔 볼까요? > Car = {} > function Car:new (obj) >> obj = obj or {} >> setmetatable(obj, self) >> self.__index = self >> return obj >> end > mine = Car:new() ì´ë ‡ê²Œ 만들면 좀 ë” ê°ì²´ 지향ì 으로 만들 수 있습니다. 여기서 setmetatableì´ë¼ëŠ” 함수가 나옵니다. metatableì— ëŒ€í•´ì„œëŠ” ë‹¤ìŒ ê°•ì˜ì—서 설명하ë„ë¡ í•˜ê² ìŠµë‹ˆë‹¤. 3. 마무리 간단하게 í…Œì´ë¸”ì— ëŒ€í•´ì„œ ë°°ì› ìŠµë‹ˆë‹¤. í…Œì´ë¸”ì€ ë£¨ì•„ì—서 가장 중요한 타잎ì´ê³ ë” ë‹¤ì–‘í•˜ê²Œ í™œìš©í• ìˆ˜ 있습니다. ë‚˜ì¤‘ì— ì¢€ ë” ê¹Šì´ í…Œì´ë¸”ì— ëŒ€í•´ì„œ ì¨ ë³´ê² ìŠµë‹ˆë‹¤.