3
는 :루아에서 rawget/set이 __index/__ newindex를 우회하는 방식을 무시할 수 있습니까? 예를 들어
local my_table = { name = "my table" }
local my_table_mt = {}
function my_table_mt.__tostring(tbl)
return "%s<%s>":format(tbl.name or "?", rawtostring(tbl))
end
이 가능한 같은가요? rawtostring 메서드가 존재하지 않는다는 것을 알고 있지만이 동작을 에뮬레이트하거나 모두 무시할 수있는 방법이 있습니까?
이 스레드 안전한가요가? – Llamageddon
'__metatable'을 사용하여 실제 메타 테이블을 숨기는 코드를 다루는 경우 일반'getmetatable' 대신'debug.getmetatable'을 사용해야합니다. ('__metatable'이 진행 중이고 제한된 환경에서와 같이'debug' 모듈을 사용할 수 없다면 운이 없어진 것입니다.) – nobody
이 코드는 루아에서 완전히 안전합니다. 루아는 전역 잠금을 설정하지 않는 한 스레드로부터 안전하지 않습니다. 다른 OS 스레드에서 다른 Lua 상태 사용 – lhf