_ENV
은 현재 클래스를 사용하여 싫어합니다. 저는 라틴어 종류의 루아 어를 만들려고 시도하고 있습니다. 어떤 것들은 정확하게 _ENV
으로 만들 수 없지만, 훨씬 더 효율적입니다. setfenv
도 비협조적이었습니다.
후속 코드는 이전 attempt to call a nil value
오류를 계속 반환합니다. 그것은 loadstring()이 점검되고있는 라인 20과 메인 덩어리에서 __latin()
함수를 호출하는 라인 23을 지정합니다.루아의 _ENV 및 클래스는 호환되지 않습니다.
function __latin(code)
__predecessor = [===[
function typographia(value)
print(value);
end
chorda = {};
chorda.__index = chorda;
function chorda.sub(chorda, cChorda, fChorda)
return string.sub(chorda, cChorda, fChorda);
end
function chorda:sub(chorda, cChorda, fChorda)
return string.sub(chorda, cChorda, fChorda);
end
--[[ define values --]]
_ENV = {salve="Salve, munde!",typographia=typographia,print=print,chorda=chorda,chorda.sub=chorda.sub}; ]===];
__finalizer = __predecessor .. " " .. code;
local status, err = pcall(loadstring(__finalizer));
print(err);
if (err == nil) then loadstring(__finalizer)(); end
end
__latin('typographia(salve); chorda.sub(salve, 1, 3);');