문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 Lua (문단 편집) === 문법적 특징 === 언어의 문법이 굉장히 단순한 편이다. 다만, [[C언어]] 스타일의 언어들과 비교했을 때 다른 점이 많다는 것이 특징이다. * 기본적인 자료형은 {{{#!syntax lua nil, boolean, number, string, function, table, userdata, thread}}}로 8가지가 있다. * 널 값을 타언어에서는 {{{null}}}로 쓰지만 Lua에서는 {{{nil}}}로 써야 한다. * 진리값은 {{{boolean}}} 타입일때 {{{true}}}는 참, {{{false}}}는 거짓이다. {{{boolean}}} 타입이 아닐 경우 {{{nil}}}이 거짓이고 나머지는 모두 참이다. 그래서 C언어와는 달리 {{{0}}}도 참이다. 쉽게 말해 {{{false}}}와 {{{nil}}}만 거짓이다. * {{{==}}}의 반대 연산자로 보통은 {{{!=}}}, {{{<>}}}등을 많이 사용하는데, Lua에서는 {{{~=}}}를 쓴다. * 논리연산자도 타 언어에서 {{{!, &&, ||}}} 등을 사용하는데 lua에서는 단어 그대로 {{{not, and, or}}}로 쓴다. * bitwise 연산자는 Lua 5.3에서 추가되었다. {{{&, |, ~(이항 비트 XOR), >>, <<, ~(단항 비트 NOT)}}} * {{{^}}}가 {{{xor}}} 관련이 아닌 {{{pow}}}, 즉 거듭제곱이다. * {{{A+=B}}} 같은 복합 대입 연산자는 지원하지 않으며 무조건 {{{A = A + B}}}처럼 작성해야 한다.[* [[Roblox Studio]]의 luau와 같이 복합 대입 연산자를 지원하는 경우에는 {{{A += 1}}}처럼 쓸 수 있다.] * 문자열 합치기는 {{{A..B}}}이다. * {{{self}}}라는 예약어 아닌 예약어가 존재한다.예약어(reserved keywords)로 분류되지는 않지만, 콜론을 사용한 함수 호출시에 self 변수를 다른 OOP 언어에서 제공하는 this나 self 변수처럼 함수 안에서 사용이 가능하다. * 반복 제어문에 {{{continue}}}가 없지만 대신 [[GOTO|{{{goto}}}]]가 있어서 비슷하게 만들어낼 수 있다.[* [[Roblox Studio]]에서는 {{{continue}}}가 존재한다.] * 인덱스가 1부터 시작한다. * 함수가 일급객체다. 예컨대, 함수를 만들어 변수에 대입하는 방식으로 작성이 가능하다. {{{function(argument) return argument end}}} 같이 한 줄로 쓸 수 있다. * 기본 자료형에 {{{thread}}} 타입이 있으나, 실제로는 {{{coroutine}}}이다. * 문자열 패턴 매칭이라는, [[정규 표현식]]과 유사한 기능을 지원한다. 다만, 정규 표현식과 다르고 기능도 훨씬 단순하다. Lua 창시자가 직접 만든 라이브러리 [[http://www.inf.puc-rio.br/~roberto/lpeg/|LPeg]]가 사실상 표준 패턴 매칭 라이브러리다. * 다른 언어들과는 달리 삼항 조건 연산자 {{{(condition ? exprIfTrue : exprIfFalse)}}} 를 지원하지 않는다. {{{condition and exprIfTrue or exprIfFalse}}} 표현으로 대체 가능하다. 정확히는 {{{exprIfTrue}}}가 참이라는 보장이 있어야 대체 가능하다. * Lua의 한 줄 주석은 {{{--Hello, World!}}}처럼 {{{--(문자)}}} 형식으로 적는다. * Lua의 여러 줄 주석은 {{{--[[문자]]--}}} 형식으로 대괄호 2개를 붙여 적는다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기