본문 바로가기

5. Lua 메타테이블(metatable) 5. 메타테이블 Writer: ospace114@empal.com, [http://ospace.tistory.com/ 테이블의 제한점 루아에서 테이블은 중요한 자료형이다. 루아에서 대부분의 작업이 이 테이블을 통해서 이뤄진다. 그러나 이러한 테이블 사용에도 한계가 있다. 예를 들어 테이블 간의 비교과 연산은 불가능하다. a = b + c --b와 c는 테이블 이러한 테이블의 제한점을 극복할 수 있는 것이 메타테이블이다. 이를 이용해서 테이블의 기능을 변경할 수 있다. 즉 테이블간의 덧셈연산도 가능하며 필요시 다른 작업으로 치환해서 사용할 수 있다. 메타테이블 정보 출력 루아에서 테이블들은 각각 자신만의 메타테이블을 가지고 있다. 사용자 데이터 역시 메타테이블을 가지고 있다. 루아에서 기본적으로 메타테이블.. 더보기
Lua 5.x와 Lua 4.0 호환성 Lua 5.x와 Lua 4.0 호환성 ospace114@empal.com (작성일 08.01.21) Lua 4.0과 Lua 5.x와 완변한 호환성이 제공되지 않는다. 버전 5.x로 업그레이드 한다면 다음 사항을 주의하길 바란다. 언어에서 변경된 내용 모든 tag메소드가 메타테이블로 대치되었다 괄호 사이에 있는 함수는 반드시 값 한 개만 반환해야한다 목록 형태의 생성자에서 마지막 항목에 있는 함수(예를 들어 {a, b, f() })에서 반환 값은 목록 맨뒤에 차례로 추가된다. or의 우선순위가 and 우선순위보다 낮다 in, false, true은 예약어이다 예전 생성 형태인 for k, v in t(여기서 t는 table)은 제거되었다. (아직까지는 지원되지만 가급적이면 for k,v in pairs(t.. 더보기
4. Lua의 조건문 반복문 4. Lua의 조건문 반복문 ospace114@empal.com (작성일: 080121) Lua에서 조건문과 반복문 종류는 총 4가지로 단순하다. 조건문은 if문이 있으며 반복문으로 while, repeat와 for문이 있다. 가장 많이 사용하는 명령어로만 단순화 시켰다. 물론 상황에 따라서 코딩을 최적화시켜서 깔끔한 코딩 스타일이 안될 수도 있지만 반면에 단순함에서 오는 장점도 있다. IF 조건문 if문은 비교 조건에 따라서 참과 거짓으로 구분되어서 실행되는 명령문이다. 비교 조건은 앞에서 다룬 연산자중에서 비교연산자 부분을 참조하면 된다. 내용은 어렵지 않기 때문에 다음의 간단한 예를 보고 넘어 가겠다. 혹시나 해서 말하지만 if-else 구문에서 if 조건문이 참인 경우는 then이하의 명령을 실행.. 더보기
3. Lua의 각종 연산자들 Lua에서는 여러 종류의 연사자가 있다. 산술 연산, 비교 연산, 논리 연산으로 구분할 수 있다. 산술 연산이야 계산과 관련된 연산이고, 비교 연산은 어느 것이 더 큰고 작은지, 혹은 같은지 다른지를 참과 거짓으로 나타낸 연산이다. 작성자: Ospace (ospace114@empal.com) http://ospace.tistory.com 3. Lua의 각종 연산자들 논리 연산은 or와 and 같이 참과 거짓 값으로만 연산을 하여 참과 거짓으로 리턴을 한다. 그러니 논리 연산은 단순 참과 거짓 말고도 함수, 변수 등과 같이 사용할 수 있다. 먼저 산술 연산을 살펴보자. a = 10 + 2 -- 덧셉 b = 10 * 3 -- 곱셈 c = 30 - 0.5 -- 뺄셈 d = 22.2 / 3 -- 나눗셈 e = .. 더보기
2. Lua 함수에 대해서 함수는 프로그램 모듈화에 가장 기본적인 기능이며 함수를 얼마나 잘 쪼개어 함수를 선언하느냐에 따라서 프로그램 성능에서 확장성까지 영향을 미친다. 루아에서 함수는 간단하고 쉽게 사용할 수 있으면 유연한 구조로 되어 있어서 좋다. 작성자: Ospace (ospace114@empal.com) http://ospace.tistory.com 2. Lua 함수에 대해서 함수는 구조는 다음과 같다. function이라는 단어가 함수라고 선언을 하고 다음에 함수명이 온다. 그리고 괄호가 와서 함수임을 표시하고 인자를 묶는다. 함수 종결은 end라는 단어에 의해서 끝마친다. function 함수명(인자1, 등등) 명령어들... end실제 사용예를 보도록 한다. -- (1) 일반 함수 형식 function hello1().. 더보기
루아의 BNF 다음은 루아의 BNF이다. www.lua.org에 document 자료를 참조 했으며 5.1 기준이다. Here is the complete syntax of Lua in extended BNF. (It does not describe operator precedences.) chunk ::= {stat [';']} [laststat [';']] block ::= chunk stat ::= varlist '=' explist | functioncall | do block end | while exp do block end | repeat block until exp | if exp then block {elseif exp then block} [else block] end | for Name '=' ex.. 더보기
1. 루아 스크립트 기초 작성자: Ospace (ospace114@empal.com) http://ospace.tistory.com 루아(Lua)에 대해서 일단 루아가 무엇인지 간략하게 알아보자.[1] 루아는 프로그램에 내장되는 스크립트이다. 혹은 임베드 스크립트라고도 한다. 물론 일반적인 스크립트 처럼 바로 실행도 가능하지만, 그렇게는 많이 사용하지 않는다. 장점 메인 프로그램과 서로 호출이 가능하며 데이터 교환도 가능하다. 특히 C언어에 이식하기 쉽다. 그래서 만들고자 하는 메인 프로그램 기능 중에 일부를 루아 스크립트로 별도로 빼어내어 구현하고 이를 메인 프로그램에서 호출가능하다. 스크립트 언어의 장점으로 쉽게 수정해서 붙일 수 있기 때문에 스크립트를 이용해서 기능을 구현할 경우 전체 프로젝트를 새로 컴파일할 필요가 없이 .. 더보기
Lua 시작하기 작성자: ospace (ospace114@empal.com) http://ospace.tistory.com Lua 시작하기 Lua 를 알고지낸지는 조금되었다. 사실 그때에는 수많은 스크립 언어 중에 하나라고 보고... 그전에 2002년 정도에 인터프리터 언어인 Python 을 조금 공부했었기에, 사실 그다지 lua에 흥미를 가지지 못하였다. Python를 보면서 처음에 익숙해지기 힘들었는데, 조금씩 익숙해지면서 상당히 감탄을 하면서 본적이 있었다. 그전에 Tk/Tcl를 보면서 상당히 괜찮은 언어다라고 생각했는데 Phyton를 보면서 이거면 끝이구나라고 생각했다. 그리고 2003년 학교에서 강의를 다니면서 이들과 멀어지면서 관심 밖으로 밀려나게 되었다. 이때에 Lua을 알았으니 별루 관심을 가지지 못하였고.. 더보기

반응형