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