Lua의 컴파일, 실행 및 디버깅 기술 소개
function dofile(filename)
local f = assert(loadfile(filename))
return f()
end
한 번만 호출하면dofile(filename)을 사용할 수 있고, 여러 번 호출하면 f=loadfile(filename)을 사용할 수 있다.f();f()...
loadstring은loadfile와 비슷하지만, 단지 한 줄에서 읽을 뿐입니다.
lua에서 함수 정의는 실행할 때 컴파일되지 않을 때 발생합니다.
f = loadstring("i=i+1")
f = function() i = i+1 end 。 loadstring :
i = 33
local i = 0;
f = loadstring("i=i+1")
g = function() i = i+1 end
g는 국부 변수 i를 사용하고 f는 전역 변수 i를 사용한다. 왜냐하면 f는 항상 전역 환경에서 컴파일되기 때문이다.
실수는 인간의 본성이기 때문에 우리는 반드시 가장 좋은 방식으로 잘못을 처리해야 한다.lua는 확장 언어로 다른 응용 프로그램에 자주 삽입되며 오류가 발생할 때 간단한crash나 exit를 사용할 수 없습니다.
print "enter a number:"
n = io.read("*number")
if not n then error("invalid input") end
만약 not condition then error end의 조합이 너무 보편적이어서 lua가 전문적으로 함수를 만들어서 이 작업을 하는데 이 함수가 assert입니다.
보통 이상이 발생했을 때, 오류 코드 (nil) 를 되돌려 주거나, 오류 (error) 를 보고하는 두 가지 방법이 있습니다.이 두 가지 방식에 대해 고정된 준칙이 선택되지 않았다.그러나 우리는 피하기 쉬운 이상은 잘못 보고해야 하며, 그렇지 않으면 이상으로 돌아가야 한다는 통용적인 원칙을 제공한다.예를 들면 다음과 같습니다.
math.sin은number형의 호도 값을 받아들인다. 만약 파라미터가number가 아니라면, 우리는 오류 코드를 되돌려 주는 것이 아니라 오류를 보고해야 한다.만약 우리가 오류 코드를 되돌려준다면, 우리는 이렇게 사용해야 한다.
local res = math.sin(x)
if not res then
사실, 우리는 이 이상을 쉽게 검출할 수 있다.sin을 호출하기 전에:
if not tonumber(x) then
일반적으로, 우리는 in의 매개 변수를 검출하지 않을 뿐만 아니라, in의 되돌아오는 값도 검출하지 않는다.만약 파라미터가number가 아니라면, 왕왕 우리 코드 자체에 문제가 생긴다.이런 상황에서 집행을 중지하고 오류를 보고하는 것이 가장 간단하고 실용적인 방법이다.
반대로오픈이라는 함수는 오픈을 호출하기 전에 이상을 검출하는 간단한 방법이 없습니다.파일이 존재하지 않거나 권한이 부족하기 때문에 열 수 없습니다.오류 코드를 되돌려주는 것을 통해 사용자가 다른 파일 이름을 입력하도록 하는 등 적당한 방식으로 처리할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.