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) 형태로 사용해라.)
- 개행문자로 시작되는 문자열에서 처음 개행문자는 무시된다.
- %var 형태는 쓰지 않으며 대신에 외부 지역 변수로 사용해라.
라이브러리에서 변경된 내용
- 모든 라이브러리 함수는 이제 테이블 내에 정의되었다. 호환위한 스크립트(compat.lua)에서 전역 이름형태로 이들을 재정의하고 있다.
- 수학 라이브러리에서 각도는 라디안으로 사용한다. 호환 스크립트(compat.lua)에서 도(degree)단위로 작동할 수 있게 했다.
- call 함수는 제거되었다. call(f, tab)대신에 unprotected call을 f(unpack(tab))으로 사용하거나 새로운 pcall 함수를 사용한다.
- dofile은 에러를 처리하지 않으며 단순히 에러를 전달한다.
- dostring은 제거되었다. loadstring으로 사용해라.
- read옵션인 *w은 사용하지 않은다.
- format옵션인 %n$은 사용하지 않은다.
API에서 변경된 내용
- lua_open는 인자를 위한 스택를 갖지 않은다. (stack은 동적)
- lua_pushuserdata은 삭제되었다. 대신에 lua_newuserdata나 lua_pushlightuserdata를 사용해라
반응형
'3.구현 > Lua' 카테고리의 다른 글
6. Lua의 C 바인딩 (0) | 2009.01.28 |
---|---|
5. Lua 메타테이블(metatable) (0) | 2008.02.28 |
4. Lua의 조건문 반복문 (0) | 2008.01.21 |
3. Lua의 각종 연산자들 (0) | 2007.07.23 |
2. Lua 함수에 대해서 (0) | 2007.07.20 |