본문 바로가기

[ C/ C++ 프로그래밍 ]/[ 루아 ]

[ 루아 ] 클래스 상속 상속도 테이블로 구현, 다른 언어와 마찬가지로 부모 클래스가 가지는 멤버함수와 변수를 사용 할 수 있다. - 소스 다운 : 이 함수에서 중요한 부분은 부모 클래스를 자식 클래스의 metatable로 설정하는 setmatatable()을 호출하는 부분과 자식 클래스가 부모 클래스 혹은 그 부모 클래스의 상위 클래스를 참조하기 위해 __index를 self로 설정하는 부분이다. 소스 다운 : 출처 및 참고 : 예제로 배우는 프로그래밍루아 더보기
[ 루아 ] 클래스 ㅇ 테이블과 클래스 루아는 명시적으로 'class'라는 형태를 지원하지 않는다. 그러나 클래스를 지원하는 것처럼 그 기능이나 형태를 비슷하게 흉내를 낼 수 있다. ==> 루아는 클래스를 반만 지원 이것은 테이블과 매우 밀접한 관련이 있다. 테이블은 객체이다. 그리고 클래스의 인스턴 역시 객체이다. 클래스의 객체를 생각해 보면 객체는 자기 자신에 상태값을 유지할 수 있다. 또한 자신의 상태값을 조작하기 위해 자기 자신의 함수를 가지고 있다. 이것을 메소드(method)라고 부른다. 테이블도 이런 기능을 가지고 있다. 그래서 테이블을 이용해 클래스를 구현해 낼 수 있다. '테이블.함수명(..)' ==> 함수의 정의 이다. '테이블:함수명()'도 가능하다. 그렇지만 '.'와 ':'는 완전히 같은 것은 아니다... 더보기
[ 루아 ] 테이블의 활용과 자료 구조 루아에서 테이블이 매우 강력한 이유 중에 한가지가 특별한 다른 장치 없이 다른 언어보다 효율적인 성능을 가진채로 테이블만으로 대부분의 자료구조 사용이 가능하다. ㅇ 배열 가장 흔하게 사용하는 저장 형태, 루아에서는 배열은 특별한 형태가 없다. 테이블 하나로 대부분의 저장형태를 구현 할 수 있다. - 소스 근본벅으로 루아의 테이블은 크기를 지정할 수 가 없다. 왜냐하면 그 크기가 동적으로 늘어나기 때문이다. 대신 원하는 사이즈만큼 초기화는 할 수 있다. 원하는 사이즈 만큼 초기화 범위를 넘을 경우에는 nil을 리턴한다. 다른 언어는 index의 시작점이 0인데 루아는 1부터 시작한다. ==> 조심하자 헷갈리지 말자 ㅠ 다만 초기화 해서 0부터 시작할 수도 있다. C처럼 선형적으로 1차원 배열을 구현하고, .. 더보기
[ 루아 ] 테이블 ㅇ 테이블이란? 기본적으로 테이블은 관계 배열(associative array)를 구현하고 있다. 즉, 앞서 필자가 말한 index를 이용한 참조 이외에도 nil을 제외한 문자열이나 기타 다른 값을 키(key)로 키에 해당하는 값을 참조 할 수 있다 배열의 크기는 동적으로 필요한 만큼 자동으로 늘어 난다.==> 루아의 큰 장점 중에 하나 테이블이 기본의 언어의 배열과 다른것은 기존 언어의 테이블 사용이 배열을 선언하고, 포인터나 참조로 그 값을 조작하는 개념이었다면 루아의 테이블은 객체(Object)이다. 그래서 동적으로 생성이 가능하고 크기가 늘어날 떄 내부적인 대량의 값의 복사가 일어나지 않으므로 성능적인 이슈 또한 거의 존재하지 않는다. ㅇ 테이블의 사용 테이블 생성을 위한 특별한 생성자 혹은 방법.. 더보기
[ 루아 ] 함수 함수란 코드의 중복을 피하고 구조적으로 만들며, 다른 사람이 이해하기 좋게 만들기 위하여 사용된다. ==> 반복된 코드들을 보기 좋게 정리해 놓은 것 ㅇ 함수의 기본 루아에서는 함수는 변수 한 종료로 처리된다 ==> 정의되는 방식은 변수와 약간 다르다. function 함수명() 코드 블럭 end 함수를 정의하기 위해서는 function 키워드를 먼저 사용하고 그 뒤에 함수명을 적는다. 코드 블럭을 적고 코드 블럭을 모두 작성했으면 end 키워드로 함수의 종료를 알린다. - 예제 소스 function test() print("함수 Test") end - 실행 결과 ㅇ 함수의 입력 입력인자를 통해서 입출력을 한다 function 함수명(입력인자) 코드 블럭 end - 예제 소스 function test(i.. 더보기
[ 루아 ] EditPlus에서 루아 사용하기 메모장에서 보다 에디트플러스를 사용하면 훨씬 쉽게 코드를 작성할 수 있다. 1. EditPlus를 다운 받자 http://www.editplus.com/kr/download.html 위에서 다운 받거나 네이버에서 EditPlus를 치면 한글판을 다운 받을 수 있다. 2. 루아 를 다운 받자 --루아는 이미 다운 받았으니 이전에 있던 경로에 추가 해주면 된다. 3. EditPlus용 Lua 문법 강조 파일 을 다운받고 추가 해준다. ==> 문법 강조 파일 에디트 플러스를 실행시킨후 메뉴에서 도구 -> 영구적인 설정에 들어가자 파일 종류 에서 추가를 눌러 Lua를 추가해주고 파일 확장자에 lua 를 해주고 구문파일에 아까 다운 받은 lua51.stx을 추가 해주자 ... 를 누르면 파일 경로를 설정해줄수 있.. 더보기
[ 루아 ] 제어 제어는 크게 분기와 반복 2가지로 나눈다. ㅇ 분기 - if에 의한 분기 한가지만 지원한다. - 기본형태 if conditions then statement . . end - 예제 local first = 1 local second = 2 if first < second then print(second .. "가" .. first .."보다 큰 수입니다."); end - 실행 - 확장 형태 if condition then statement . . elseif conditions then statement . else statement . . end - elseif는 if의 조건이 false일 경우 새로운 조건을 적용하기 위해서 사용, 필요한 만큼 여러번 사용가능 - esle는 if, elseif로 설정된.. 더보기
[ 루아 ] 연산자 ㅇ 치환 연산자 - '=' 를 말한다. ㅇ 산술 연산자 - + , - , % , *, %, ^ ㅇ 관계 연산자 - >, =, 여기서 배열은 문자열이 될수도 있고 테이블이 될수도 있다. ㅇ 연산자간의 우선순위 ① ^ : 오른쪽 우선 ② -, not, # : '-'는 단항 연산자 부호를 의미 ③ *, /, % ④ +, - :'-'는 빼기 연산자 ⑤ .. : 오른쪽 우선 ⑥ >, =, 더보기
[ 루아 ] 변수 ㅇ 규칙 - 변수명은 영문자, 숫자, _를 혼합 ==> 시작은 영문,_로 시작 - 대소문자 구별 - 공백이나 특수문자를 변수명으로 사용 불가 - 예약어 사용 불가 and, break, do, else, elseif, end, false, for, function, if , in , local, nil, not, or, repeat, return, then, true, until, while ㅇ 동적변수 - 동적 변수형 지원 ==> 변수를 쓸 때 변수형을 미리 정희할 필요 없음 - 변수값들이 그 자신의 변수형을 알고 있음 ※ print함수는 입력인자의 값을 출력해 주는 기능을 가지고 있다. type 함수는 입력인자의 변수형을 반환하는 기능을 가지고 있다. ㅇ 변수의 종류 nil, 부울(boolean), 숫.. 더보기
[ 루아 ] 루아 기초 ㅇ 루아란? - 매우 덩치가 작은 스크립트 언어 --> 루아를 구현한 크기가 ANSI C코드로 6천줄 정도 - 다른 언어에 임베디드하기 용이함 - 루아의 기본엔진은 대체로 100KB가 넘지 않음 - 멀티스레딩 지원 - 코루틴(coroutine)이라는 형태를 통해 메모리가 허락하는 한 스레드 생성 가능 - 빠르다 ( 적은양의 메모리 사용) - Python이나 기타 스크립트 언어에 비해 라이브러리의 수가 빈약 ㅇ 루아 설치 http://luabinaries.sourceforge.net/download.html lua5_1_4_Win32_bin.zip Windows x86 Executables - 위의 사이트에 들어가서 자신에 맞는 비이너리를 다운로드 한후 원하는곳에 압축을 풀어주면 된다. lua5.1.exe.. 더보기