j$k110727j$k
함수가 반환 하는 테라 형식을 확인할 수 없기 때문에 Lua 함수는 기본적으로 테라 함수로 값을 반환 하지 않습니다. Lua 함수를 값을 반환 하는 테라 함수로 변환 하려면 먼저이를 테라 함수 형식으로 캐스팅 해야 합니다. 예제의 마지막 줄은 최상위 컨텍스트에서 테라 함수를 호출 한다. 이것은 테라와 루아 사이의 상호 작용의 예입니다. 테라 코드는 JIT가 처음 필요할 때 기계어 코드로 컴파일됩니다. 이 예제에서는 addone이 호출 될 때 발생 합니다. 일반적으로 함수는 호출 될 때 또는 컴파일되는 다른 함수에 의해 참조 될 때 필요 합니다. 는 테라 구문 분석을 구현 하는 Lua 파서의 확장 버전입니다. 반면 루아 (사용-vv 무엇 루아로 전달 됩니다)에 남아 있는 코드를 전달 하는 그것을 파서 테라 코드, 테라 코드에 대 한 테라 AST 건물. 실제로 테라 코드 작성을 시작 하려면, 우리는 키워드 테라와 테라 함수를 소개 합니다: 정수 명시적 크기를 제외 하 고 int 및 uint 특정 크기가 중요 하지 않은 경우에만 사용 해야 합니다.
C에서 대부분의 암시적 변환은 테라 에서도 유효 합니다. 한 가지 주요 예외는 bool 형식입니다. C와 달리 모든 제어 흐름을 명시적으로 필요로 bool 및 정수를 명시적으로 변환할 수 없습니다 bool. 테라는 Lua 프로그래밍 언어와 원활 하 게 상호 운용 하도록 설계 된 새로운 로우 레벨 시스템 프로그래밍 언어입니다. 그것은 또한 뒤에와 호환이 된다 (그리고 삽입에서) 기존 하는 C 부호. C와 마찬가지로 테라는 수동 메모리 관리와 함께, monommorphic, 정적 형식, 컴파일된 언어입니다. 그러나 C와 달리, 그것은 루아 쉽게 상호 작용을 하도록 설계 되었습니다. 테라 코드 공유 루아의 구문과 제어 흐름 구문. 그것은 테라에서 루아 함수를 호출 쉽습니다 (또는 루아에서 테라 함수). 이진 릴리스가 적절 하지 않은 경우에는 소스에서 테라를 빌드할 수도 있습니다.
테라 (llvm에 대 한 c/c + + 프론트 엔드), 그리고 luajit 2.0.5-추적-루아 코드에 대 한 JIT를 llvm을 사용 합니다. 테라 다운로드 하 고 당신을 위해 luajit 컴파일, 하지만 당신은 clang과 llvm을 설치 해야 합니다. 또한, 테라 함수를 로컬로 범위가 지정 된 Lua 변수로 선언할 수 있습니다.