본문 바로가기

Lua extention (루아 확장 모듈) 만들기 여기서는 루아의 embedded보다는 extension을 살펴보기로 하겠습니다. 실제를 루아의 embedded를 더 많이 사용하고 있기 때문에 extension 활용이 떨어졌습니다. 그러다가 최근에 루아를 사용해서 테스트 스크립트를 작성하다가 extension에 대한 필요가 생겼습니다. 만들어놓은 이유가 다 있네요. 여기서는 간단한 예제를 통해서 extension을 사용하는 법을 아주 간략하게 살펴볼 것입니다. 작성자: http://ospace.tistory.com/,2015.02.24 (ospace114@empal.com) 기본사항 먼저, 루아 extension이란 루아를 확장하기 위한 기능입니다. Embedded가 아닌 단순히 스크립트를 슬행해서 동작하는 경우 필요한 기존에 없던 기능을 구현하려고 합.. 더보기
Lua에서 객체지향적 코딩 하기 오랜만에 lua 관련 글을 써본다. 이번 내용에서는 루아에서 객체지향적 코딩 구조를 만들려고 한다. 이런 내용은 이미 다른 곳에서 있는 내용을 단지 참고하여 정리하는 수준이지만, 조금 더 나름대로 정리할려고 한다. 객체지향이 나온지는 정말 오랜(?) 시간이 흘렀다. 그러나 루아에서는 객체지향을 지원하지 않는다. 이를 흉내내는 수준일 뿐이다. 객체지향 흉내내기 루아에서는 객체지향에서 캡슐화 정도을 흉내낼 것이다. 상속과 다형성 측면은 다루지 않을 것이다. 캡슐화라고 해서 완벽한 것은 아니고, 단지 멤버 변수와 멤버 함수를 하나의 객체로 묶어 놓았을 뿐, 외부에서 멤버 변수나 멤버 함수에 대한 접근을 제한할 수는 없다. 루아에서 캡슐화 흉내는 테이블이라는 막강한(?) 데이터 형을 기반으로 구현한다. 테이블과.. 더보기
lua 동향(2011/10) 작성:http://ospace.tistory.com/(ospace114@empal.com) 2011.10.26 lua에 대해 관심을 가진지는 오래되었네요. 그렇다고해서 루아에 "ㄹ" 정도 알려나. ㅡ.ㅡ;;; 실무에는 간간히 적용해서 요즘이 감각이 무뎌지고 있어요. orz 요즘 대세는 python 아니면 ruby라서 lua가 조금 소외된 면이 많았네요. 특히, 게임 분야에서만 많이 사용하는 합니다. 저는 게임 분야가 아니라서 주변에서는 사용하시는 분이 아에 없네요. GUI 최근 검색하던 중에 lua가 우연히 눈에 보이더군요. 많은 라이브러리들이 많이 나왔더군요. 특히, 유연한 UI를 위해서 lua을 사용하여 사용자가 동적으로 화면을 구성하려고 했었죠. 근데, lua용 UI SDK가 있더군요. IUP와 w.. 더보기
6. Lua의 C 바인딩 Lua와 C을 바인딩하는 내용을 살펴보겠다. 바인딩는 Lua에서 C에 있는 값이나 함수를 사용거나 C에서 Lua에 있는 값이나 함수를 가져다 사용하겠다는 의미이다. 추후에 C++과 바인딩도 살펴보도록 하겠다. C++바인딩을 간략히 말하면 C++의 객체지향적 개념을 lua의 테이블에 도입하여 사용하겠다는 의미이다. 일단 C와 바인딩이 쉽고 Lua에서도 C를 위한 API를 제공하기 때문에 먼저 C 바인딩을 살펴보고 주소 API에 대해서 간략하게 살펴보기로 하겠다. 작성자: http://ospace.tistory.com/,2013.04.15 (ospace114@empal.com) C에서 Lua바인딩 위한 기본 설정 기본적으로 Lua 라이브러리가 설치되어 있어야 한다. 이는 Lua.org에서 download 항.. 더보기
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 = .. 더보기

반응형