1. ํ
์ด๋ธ ๊ธฐ์ด
์ค๋์ ๋ฃจ์๋ง์ด ๊ฐ๊ณ ์๋ ๋
ํนํ ์๋ฃ๊ตฌ์กฐ ํ
์ด๋ธ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. ๋ฃจ์์์ ํ
์ด๋ธ์ ํด์ฌ ํ
์ด๋ธ๊ณผ ๊ฐ์ ์๋ฃ ๊ตฌ์กฐ ์ด์์ ์ญํ ์ ํฉ๋๋ค. ํ
์ด๋ธ์ ๊ฐ์ฒด์งํฅ์ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ์ญํ ๋ ๊ฒนํฉ๋๋ค. ๋ฌด์จ ์ด์ผ๊ธฐ์ธ์ง๋ ์ฒ์ฒํ ์ค๋ช
๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ฐ์ ๊ฐ๋จํ๊ฒ ์๋ฃ๊ตฌ์กฐ๋ก์จ์ ํ
์ด๋ธ์ ์ดํด ๋ณด๊ฒ ์ต๋๋ค.
ํด์ฌ ํ
์ด๋ธ๋ก ์ฌ์ฉํ๊ธฐ
์ฌ๊ธฐ์ a ๋ ํค ๊ฐ์ผ๋ก ์ฌ์ฉ ๋์๊ณ 1๋ a์ ๋งดํ ๋ ๊ฐ์ผ๋ก ์ฌ์ฉ ๋์์ต๋๋ค. ํค ๊ฐ์ ๋จ์ํ ๊ฐ์ผ๋ก ๋ง๊ณ ๋ณ์๋ก๋ ์ฌ์ฉ ํ ์ ์์ต๋๋ค.
๋์ ๊ฐ์ผ๋ก ํค๊ฐ์ ์ฌ์ฉํ ๋์๋ ๋ค๋ฅด๊ฒ ๋ณ์์์๋ ํ
์ด๋ธ๋ช
์ . ๋ก๋ ๋ณ์๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค. HashT2a ๋ก๋ ์ฐธ์กฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ง์ฝ ํ
์ด๋ธ์ ๋ง๋ค ๋ ํค๊ฐ์ด ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๊ทธ๋ผ ์ ์ํ์ผ๋ก ์์ฐจ์ ์ผ๋ก ๋ฒํธ๊ฐ ๋งค๊ฒจ์ง๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Fruit = { "apple","orange","banana" }apple
print ( Fruit1 )
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ
์ด๋ธ์ ๋ฐฐ์ด๋ก๋ ์ฌ์ฉ ๋ ์ ์์ต๋๋ค. ๊ทธ๋ผ ๋ฐฐ์ด์ ์ถ๊ฐ์ ์ผ๋ก insert ํ๊ณ remove ํด ๋ณด๊ฒ ์ต๋๋ค.
Fruit #Fruit + 1 = "grape" -- Fruit ์ ์์ดํ ๊ฐฏ์๋ฅผ ์ป์ด + 1์ ํด์ ๋ง์ง๋ง ์ฒจ์๋ฅผ ๊ตฌํด ๊ฐ์ ๋์ ํ๋ค.grape
print( Fruit4 )
์ด๋ ๊ฒ ๊ท์ฐฎ๊ฒ ์ถ๊ฐ๋ฅผ ํ ์๋ ์์ง๋ง, ๊ฐ๋จํ table.insert(Fruit,"kiwi") ์ฒ๋ผ ๊ฐ๋จํ ํ ์๋ ์์ต๋๋ค. ์ญ์ ๋ table.remove(Fruit,4) ๋ก 4๋ฒ์งธ ์์ดํ
์ ์ญ์ ํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ฝ ๋ฐฐ์ด๋ก ์ฌ์ฉํ๋ ํ
์ด๋ธ ๋ด์ ๊ฐ๋ค์ ์ ๋ ฌํ๊ณ ์ถ์ผ๋ฉด table.sort๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
banana
kiwi
orange
table.sort(Fruit)apple
for i = 1,#Fruit do print(Fruiti) end
banana
kiwi
orange
2. ํ
์ด๋ธ๊ณผ ํจ์
์ง๊ธ๊น์ง๋ ๊ฐ๋จํ ํ
์ด๋ธ์ ์๋ฃ๊ตฌ์กฐ๋ก ์ฌ์ฉํ์๋๋ฐ, ๋ฃจ์์์๋ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ด ํ
์ด๋ธ์ ํค๋ก ์ฌ์ฉ ๋ ์ ์๊ธฐ ๋๋ฌธ์ ํ
์ด๋ธ๊ณผ ํจ์๋ฅผ ์ฐ๊ฒฐ ํ ์ ์์ต๋๋ค.
function Car(name)SM3 is running
local car_name = namemyCar = Car("SM3") -- Car ๋ผ๋ ํจ์๋ฅผ ํตํด ํ ์ด๋ธ์ ๋ง๋ค๊ณ ํ ์ด๋ธ ๋ด์ ํจ์๋ฅผ ํตํด ๊ฐ์ฒด ์งํฅ ์ฝ๋ ์์ฑ
local function Go()
print( car_name .. " is running" )
end
return { Go = Go } -- ์ฌ๊ธฐ์ local function Go๋ฅผ ๋ฐํํ๋ฏ๋ก Car์ ๋ํ ๋งด๋ฒ ํจ์๋ก ์ฌ์ฉํ ์ ์๋ค.
end
myCar.Go()
myCar:Go()SM3 is running
์์ ์์ ๋ง์ผ๋ก ๊ฐ์ฒด ์งํฅ์ด๋ผ๊ณ ๋ถ๋ฅด๊ธฐ ์ข ๋ถ์กฑํ ๋ฉด์ด ์๋ ๊ฒ ๊ฐ๋ค์. ๊ทธ๋ผ ์ข ๋ ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ๋ฐ๊ฟ ๋ณผ๊น์?
Car = {}
function Car:new (obj)
obj = obj or {}mine = Car:new()
setmetatable(obj, self)
self.__index = self
return obj
end
์ด๋ ๊ฒ ๋ง๋ค๋ฉด ์ข ๋ ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ๋ง๋ค ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ setmetatable์ด๋ผ๋ ํจ์๊ฐ ๋์ต๋๋ค. metatable์ ๋ํด์๋ ๋ค์ ๊ฐ์์์ ์ค๋ช
ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
3. ๋ง๋ฌด๋ฆฌ
๊ฐ๋จํ๊ฒ ํ ์ด๋ธ์ ๋ํด์ ๋ฐฐ์ ์ต๋๋ค. ํ ์ด๋ธ์ ๋ฃจ์์์ ๊ฐ์ฅ ์ค์ํ ํ์์ด๊ณ ๋ ๋ค์ํ๊ฒ ํ์ฉํ ์ ์์ต๋๋ค. ๋์ค์ ์ข ๋ ๊น์ด ํ ์ด๋ธ์ ๋ํด์ ์จ ๋ณด๊ฒ ์ต๋๋ค.
๊ฐ๋จํ๊ฒ ํ ์ด๋ธ์ ๋ํด์ ๋ฐฐ์ ์ต๋๋ค. ํ ์ด๋ธ์ ๋ฃจ์์์ ๊ฐ์ฅ ์ค์ํ ํ์์ด๊ณ ๋ ๋ค์ํ๊ฒ ํ์ฉํ ์ ์์ต๋๋ค. ๋์ค์ ์ข ๋ ๊น์ด ํ ์ด๋ธ์ ๋ํด์ ์จ ๋ณด๊ฒ ์ต๋๋ค.