Lua ์–ธ์–ด์˜ ์œ ํ˜• ๊ฒ€์‚ฌ ๋ณ€ํ˜•์ธ Luau์šฉ ์˜คํ”ˆ ์†Œ์Šค

Lua ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์ฒซ ๋ฒˆ์งธ ๋…๋ฆฝ ์‹คํ–‰ํ˜• ๋ฆด๋ฆฌ์Šค์˜ ์˜คํ”ˆ ์†Œ์Šค ๋ฐ ์ถœํŒ์„ ๋ฐœํ‘œํ•˜์—ฌ Lua ์–ธ์–ด ๊ฐœ๋ฐœ์„ ๊ณ„์†ํ•˜๊ณ  Lua 5.1๊ณผ ์—ญํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. Luau ์–ธ์–ด๋Š” ์ฃผ๋กœ ์Šคํฌ๋ฆฝํŒ… ์—”์ง„์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋‚ด์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ฉฐ ๊ณ ์„ฑ๋Šฅ๊ณผ ๋‚ฎ์€ ๋ฆฌ์†Œ์Šค ์†Œ๋น„๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋Š” C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ MIT ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๊ณต๊ฐœ๋ฉ๋‹ˆ๋‹ค.

Luau๋Š” ์œ ํ˜• ๊ฒ€์‚ฌ ๊ธฐ๋Šฅ๊ณผ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ๊ตฌ๋ฌธ ๊ตฌ์กฐ๋กœ Lua๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. ์–ธ์–ด๋Š” Lua 5.1๊ณผ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋ฉฐ ๋ถ€๋ถ„์ ์œผ๋กœ ์ตœ์‹  ๋ฒ„์ „๊ณผ๋„ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. Lua ๋Ÿฐํƒ€์ž„ API๊ฐ€ ์ง€์›๋˜๋ฏ€๋กœ ๊ธฐ์กด ์ฝ”๋“œ ๋ฐ ๋ฐ”์ธ๋”ฉ๊ณผ ํ•จ๊ป˜ Luau๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ธ์–ด ๋Ÿฐํƒ€์ž„์€ ํฌ๊ฒŒ ์žฌ์ž‘์—…๋œ Lua ๋Ÿฐํƒ€์ž„ 5.1 ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์ง€๋งŒ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ์™„์ „ํžˆ ๋‹ค์‹œ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ Lua์— ๋น„ํ•ด ๋” ๋†’์€ ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ์ตœ์ ํ™” ๊ธฐ์ˆ ์ด ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋Š” Roblox์—์„œ ๊ฐœ๋ฐœํ–ˆ์œผ๋ฉฐ Roblox Studio ํŽธ์ง‘๊ธฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ์ด ํšŒ์‚ฌ์˜ ๊ฒŒ์ž„ ํ”Œ๋žซํผ, ๊ฒŒ์ž„ ๋ฐ ์‚ฌ์šฉ์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฝ”๋“œ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” Luau๊ฐ€ ๋น„๊ณต๊ฐœ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋‚˜ ๊ฒฐ๊ตญ์—๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฐธ์—ฌ๋ฅผ ํ†ตํ•œ ์ถ”๊ฐ€ ๊ณต๋™ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ๊ฐœ๋ฐฉํ˜• ํ”„๋กœ์ ํŠธ ๋ฒ”์ฃผ๋กœ ์ „ํ™˜ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ :

  • ๋™์  ํƒ€์ดํ•‘๊ณผ ์ •์  ํƒ€์ดํ•‘ ์‚ฌ์ด์˜ ์ค‘๊ฐ„ ์œ„์น˜๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ์ ์ง„์  ํƒ€์ดํ•‘. Luau๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ˆ˜ ์ฃผ์„์„ ํ†ตํ•ด ์œ ํ˜• ์ •๋ณด๋ฅผ ์ง€์ •ํ•˜์—ฌ ํ•„์š”์— ๋”ฐ๋ผ ์ •์  ์œ ํ˜• ์ง€์ •์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด์žฅ ์œ ํ˜• "any", "nil", "boolean", "number", "string" ๋ฐ "thread"๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜์˜ ์œ ํ˜•์„ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜ํ•˜์ง€ ์•Š๊ณ ๋„ ๋™์  ์œ ํ˜• ์ง€์ •์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. function foo(x: ์ˆซ์ž, y: ๋ฌธ์ž์—ด): ๋ถ€์šธ ๋กœ์ปฌ k: ๋ฌธ์ž์—ด = y:rep(x) return k == โ€œaโ€ end
  • "\5.3x**"(0์ง„์ˆ˜), "\u{**}"(์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž) ๋ฐ "\z"(์ค„ ๋)์™€ ๊ฐ™์€ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด(Lua 1์—์„œ์™€ ๊ฐ™์ด) ์ง€์› ์ˆซ์ž ํ˜•์‹(000 ๋Œ€์‹  000_1000000_0์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ์Œ), 0์ง„์ˆ˜(XNUMXx...) ๋ฐ XNUMX์ง„์ˆ˜(XNUMXb......)์— ๋Œ€ํ•œ ๋ฆฌํ„ฐ๋Ÿด์„ ์‹œ๊ฐํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ.
  • ์ƒˆ๋กœ์šด ๋ฃจํ”„ ๋ฐ˜๋ณต์œผ๋กœ ์ ํ”„ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด "break" ํ‚ค์›Œ๋“œ๋ฅผ ๋ณด์™„ํ•˜๋Š” "continue" ํ‘œํ˜„์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณตํ•ฉ ํ• ๋‹น ์—ฐ์‚ฐ์ž(+=, -=, *=, /=, %=, ^=, ..=)๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ธ”๋ก ์‹คํ–‰ ์ค‘์— ๊ณ„์‚ฐ๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ‘œํ˜„์‹ ํ˜•์‹์˜ ์กฐ๊ฑด๋ถ€ "if-then-else" ๋ธ”๋ก ์‚ฌ์šฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ธ”๋ก์—์„œ ์ž„์˜์˜ ๊ฐœ์ˆ˜์˜ elseif ํ‘œํ˜„์‹์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. local maxValue = a > b์ด๋ฉด a else b ๋กœ์ปฌ ๋ถ€ํ˜ธ = x < 0์ด๋ฉด -1 elseif x > 0์ด๋ฉด 1 else 0
  • ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฉ๋ฆฌ ๋ชจ๋“œ(์ƒŒ๋“œ๋ฐ•์Šค)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž์‹ ์˜ ์ฝ”๋“œ์™€ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ(์˜ˆ: ์•ˆ์ „์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋Š” ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)๋ฅผ ๋‚˜๋ž€ํžˆ ๊ตฌ์„ฑํ•˜์—ฌ ์‹คํ–‰์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž ์žฌ์ ์œผ๋กœ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์ œ๊ฑฐ๋œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ œํ•œ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ "io"(ํŒŒ์ผ ์•ก์„ธ์Šค ๋ฐ ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘), "package"(ํŒŒ์ผ ์•ก์„ธ์Šค ๋ฐ ๋ชจ๋“ˆ ๋กœ๋“œ), "os"(ํŒŒ์ผ ์•ก์„ธ์Šค ๋ฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ), "debug"(๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ž‘์—…) , "dofile" ๋ฐ "loadfile"(FS ์•ก์„ธ์Šค).
  • ์ •์  ์ฝ”๋“œ ๋ถ„์„, ์˜ค๋ฅ˜ ์‹๋ณ„(linter) ๋ฐ ์˜ฌ๋ฐ”๋ฅธ ์œ ํ˜• ์‚ฌ์šฉ ํ™•์ธ์„ ์œ„ํ•œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ž์ฒด ๊ณ ์„ฑ๋Šฅ ํŒŒ์„œ, ๋ฐ”์ดํŠธ์ฝ”๋“œ ํ•ด์„๊ธฐ ๋ฐ ์ปดํŒŒ์ผ๋Ÿฌ. Luau๋Š” ์•„์ง JIT ์ปดํŒŒ์ผ์„ ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ ์ผ๋ถ€ ์ƒํ™ฉ์—์„œ๋Š” Luau ์ธํ„ฐํ”„๋ฆฌํ„ฐ์˜ ์„ฑ๋Šฅ์ด LuaJIT์™€ ์ƒ๋‹นํžˆ ๋น„์Šทํ•˜๋‹ค๊ณ  ์ฃผ์žฅ๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€