본문 바로가기

3.구현/Lua

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) 형태로 사용해라.)
  • 개행문자로 시작되는 문자열에서 처음 개행문자는 무시된다.
  • %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