E D R , A S I H C RSS

LUA_5

1. ํ…Œ์ด๋ธ” ๊ธฐ์ดˆ

์˜ค๋Š˜์€ ๋ฃจ์•„๋งŒ์ด ๊ฐ–๊ณ  ์žˆ๋Š” ๋…ํŠนํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฃจ์•„์—์„œ ํ…Œ์ด๋ธ”์€ ํ•ด์‰ฌ ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์€ ์ž๋ฃŒ ๊ตฌ์กฐ ์ด์ƒ์˜ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์€ ๊ฐ์ฒด์ง€ํ–ฅ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์—ญํ• ๋„ ๊ฒนํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์Šจ ์ด์•ผ๊ธฐ์ธ์ง€๋Š” ์ฒœ์ฒœํžˆ ์„ค๋ช… ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ์จ์˜ ํ…Œ์ด๋ธ”์„ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•ด์‰ฌ ํ…Œ์ด๋ธ”๋กœ ์‚ฌ์šฉํ•˜๊ธฐ

HashT = {a = 1, b = 2, c = 3, d = 4 }
print( Hashta )
1
print( Hashtb )
2

์—ฌ๊ธฐ์„œ a ๋Š” ํ‚ค ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ ๋˜์—ˆ๊ณ  1๋Š” a์— ๋งดํ•‘ ๋œ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ‚ค ๊ฐ’์€ ๋‹จ์ˆœํžˆ ๊ฐ’์œผ๋กœ ๋ง๊ณ  ๋ณ€์ˆ˜๋กœ๋„ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HashT2 = { a = 1, b = 2, c= 3}
print ( HashT2.a )
1

๋Œ€์‹  ๊ฐ’์œผ๋กœ ํ‚ค๊ฐ’์„ ์‚ฌ์šฉํ• ๋•Œ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๋ณ€์ˆ˜์—์„œ๋Š” ํ…Œ์ด๋ธ”๋ช…์— . ๋กœ๋„ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HashT2a ๋กœ๋„ ์ฐธ์กฐ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค ๋•Œ ํ‚ค๊ฐ’์ด ์—†๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๊ทธ๋Ÿผ ์ •์ˆ˜ํ˜•์œผ๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ง‘๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Fruit = { "apple","orange","banana" }
print ( Fruit1 )
apple

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ด๋ธ”์€ ๋ฐฐ์—ด๋กœ๋„ ์‚ฌ์šฉ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๋ฐฐ์—ด์— ์ถ”๊ฐ€์ ์œผ๋กœ insert ํ•˜๊ณ  remove ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Fruit #Fruit + 1 = "grape" -- Fruit ์˜ ์•„์ดํ…œ ๊ฐฏ์ˆ˜๋ฅผ ์–ป์–ด + 1์„ ํ•ด์„œ ๋งˆ์ง€๋ง‰ ์ฒจ์ž๋ฅผ ๊ตฌํ•ด ๊ฐ’์„ ๋Œ€์ž…ํ•œ๋‹ค.
print( Fruit4 )
grape

์ด๋ ‡๊ฒŒ ๊ท€์ฐฎ๊ฒŒ ์ถ”๊ฐ€๋ฅผ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๊ฐ„๋‹จํžˆ table.insert(Fruit,"kiwi") ์ฒ˜๋Ÿผ ๊ฐ„๋‹จํžˆ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ญ์ œ๋Š” table.remove(Fruit,4) ๋กœ 4๋ฒˆ์งธ ์•„์ดํ…œ์„ ์‚ญ์ œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

table.insert(Fruit,"mango")
print(Fruit6)
mango
table.remove(Fruit,6)
print(Fruit6)
nil

๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ ๋ฐฐ์—ด๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ด๋ธ” ๋‚ด์˜ ๊ฐ’๋“ค์„ ์ •๋ ฌํ•˜๊ณ  ์‹ถ์œผ๋ฉด table.sort๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
table.sort(Fruit)
for i = 1,#Fruit do print(Fruiti) 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. ๋งˆ๋ฌด๋ฆฌ
๊ฐ„๋‹จํ•˜๊ฒŒ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด์„œ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์€ ๋ฃจ์•„์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํƒ€์žŽ์ด๊ณ  ๋” ๋‹ค์–‘ํ•˜๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์ข€ ๋” ๊นŠ์ด ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด์„œ ์จ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:37
Processing time 0.0080 sec