목록Study/Lua (8)
알맹이방
코루틴은 corutine테이블로 사용한다. 스레드들이 동시에 한번에 돌아가는 형태가 아니라 한 번에 한 코루틴만 수행된다. 코루틴의 생성 코루틴은 생성된 코루틴을 표현하는 thread 타입의 값을 반환한다. co = corutine.create(function() print("hi") end) 코루틴의 상태 suspended(중지) --> 다음에 다시 실행할 수 있음 running(실행 중) dead(종료) normal(일반) print(corutine.status(co)) suspended --- resume ---> running ------> dead yield 실행 중인 코루틴을 중지하고 나중에 다시 실행할 수 있는 상태로 바꾼다. co = corutine.create(function() for ..
미리 컴파일 된 코드 루아는 실행하기 전에 코드를 미리 컴파일한다. 그래서 루아를 컴파일된 코드 형태로 배포할 수 있다. 컴파일 된 코드 형태로 배포하면 소스 코드의 잘못 수정하는 것을 막을 수 있다. 하지만 악의적으로 변형된 바이너리 코드는 루아 인터프리터나 프로그램까지 죽여버릴 수 있다. load 함수에 이런 일을 처리하기 위한 옵션이 있다. load 함수에는 필수가 아닌 인자 3개가 있는데, 세 번째 인자가 어떤 종류의 청크만 읽을 수 있게 할 것인지 제어하는 역할을 한다. 세번 째 인자에 "t"를 입력하면 텍스트로 된 보통의 소스 코드 형태의 청크만 읽어올 수 있다. "b"를 입력하면 바이너리 형태의 청크만, "bt"를 입력하면 두 형식 모두 읽을 수 있다. C언어로 작성한 코드 C언어로 구현할 ..
dofile : 파일에서 루아 청크를 읽어 오는 작접만 처리하고 이를 실행하지는 않는다. 청크를 컴파일해서 컴파일된 청크를 함수로 반환한다. loadfile : dofile + dofile과는 다르게 청크에 문제가 있으면 오류를 발생하지 않고 오류 코드를 반환한다. -> 사용자가 오류 처리할 수 있도록 함 간단한 작업을 할 때에는 호출 한 번으로 처리할 수 있는 dofile을 쓰는 것이 편하다. 하지만 파일의 내용을 여러 번 실행하는 경우, lodadfile을 한 번 호출하고 반환 받은 함수를 여러 번 호출하게 처리할 수 있다. 그러면 dofile처럼 여러 번 컴파일하지 않고 한 번만 컴파일 할 수 있다. load : 청크를 문자열에서 읽어옴 f = load("i = i + 1") i=0 f(); pri..