본문 바로가기

분류 전체보기

Lua 메타테이블 테이블의 한계테이블은 아주 중요한 자료형. 대부분의 작업이 테이블에서 가능하다.하지만 한계도 있다. ex) 테이블 간의 비교와 연산은 불가능. 1tblRes = tbl1 + tbl2 -- Xcs 이런 것을 가능하게 하는 것이 메타테이블테이블간의 덧셈연산도 가능하고 필요시 다른 작업으로 치환해서 사용할 수 있다. 메타테이블 정보 출력루아에서 테이블들은 각각 메타테이블을 가지고 있다.사용자 데이터 역시 메타테이블을 가지고 있다. 메타테이블 확인 함수1getmetatable(tbl)cs 메타테이블이 설정되어 있지 않다면 해당 함수는 nil을 반환한다. 메타테이블 설정하기1setmetatable(tbl, metatbl)cs 메타테이블을 지정하면 미리 정의된 함수들로 함수를 재정의 할 수 있다.그리고 따로 함수를.. 더보기
Lua 5.x와 4.0 호환성 원문http://ospace.tistory.com/97 Lua 5.x와 Lua 4.0 호환성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 p.. 더보기
Lua 조건문, 반복문 종류if, while, repeat, for if 조건문내가 아는 그 이프문이 맞겠지. 12345678if condition then statement1elseif another condition then statement2...else statementEndendcs elseif 더보기
Lua 연산자 종류산술연산, 비교연산, 논리연산 산술연산사칙연산, ^(승수), -(역수) 비교연산==(equal)~=(not equal)>, =, 더보기
Lua 함수 기본 형태1234function funcName(argument, ...) statementend Colored by Color Scriptercs 별로 어렵지 않게 사용할 수 있다. 전역변수와 지역변수기존에 사용하던 것은 전역변수이고 함수 내부에서 local로 변수를 선언하면 지역 변수로 사용할 수 있다. 멀티 리턴다중리턴이라니.............., 단위로 리턴하고 그걸 받을 수 있다. 더보기
Lua 자료형 자료형자료형이 없이 단순 데이터 대입. print 함수print 111과 같은 형태는 에러를 반환한다. print "momo"print (value)형태는 모두 가능. 주석-- type() 함수해당 자료형의 타입을 알 수 있다. 테이블형중괄호 { }를 이용하여 테이블형으로 묶을 수 있다.여러 타입을 한번에 묶을 수 있다. 테이블 길이 가져오는 함수table.getn() 함수를 주로 사용했는데 5.2버전에서 제외되고 #value 형태로 사용된다고 한다. 시작은 0이 아니라 1임을 주의! 테이블은 구조체와 비슷한 형식으로도 사용할 수 있다.eqTable2.cate는 cate가 없는 변수지만1eqTable2.cate = "swrod"cs이렇게 해주면 해당 테이블에 추가가되며 변수를 넣어준다. 여러 변수 동시 .. 더보기
Lua script 개요 루아란 포르투갈어로 '달'이라는 뜻.브라질의 Tecgraf의 한 팀에서 개발했다고 한다. 언어의 특징- Free- 파일 크기가 작다.- 이식성이 좋다.- 런타임 속도가 빠르다. 내장 스크립트는 왜 쓰는가?예) RPG 게임무기의 속성이름, 가격, 종류, 힘, 민첩, 지력이름 = 보팔검, 가격 = 10000골드, 종류 = 장검, 힘 = 100000, 민첩 = 10000, 지력 = 10000 실제 게임에서 힘이 100000이던 보팔검이 너무 약한 느낌이 들어 수정을 하려고 하면?스크립트로 분리되어 있지 않다면 값을 변경하고 다시 빌드해야 한다.하지만 스크립트로 빼게 되면 이런 문제를 해결할 수 있다. 프로그래머- C++ 함수를 루아에서 호출할 수 있게 한다.- 재컴파일 없이 상수를 변형시켜 테스트할 수 있다... 더보기
[effective STL] 항목 10 : 할당자(allocator)의 일반적인 사항과 제약 사항 정리- 할당자를 템플릿으로 만든다. 템플릿 매개 변수에는 메모리를 할당하고자 하는 객체의 타입을 나타내는 T를 사용한다,- 포인터와 레퍼런스라는 typedef 타입을 제공하되, 항상 포인터는 T*, 레퍼런스는 T&- 할당자에는 객체별 상태를 절대로 주지 않는다. 일반적으로, 할당자는 비정적 데이터 맴버를 가질 수 없다.- 할당자의 allocate 멤버 함수에는 필요한 객체의 개수를 매개 변수로 넘긴다.(바이트 수가 아님) 이 함수는 T* 포인터(포인터라는 typedef 타입을 통해) 반환(비록 T 객체는 아직 생성되지 않았지만)한다.- 표준 컨테이너(연관 컨테이너)에서 필요로 하는 rebind라는 중첩 템플릿을 꼭 제공한다. 더보기