깊게 중첩 된 표 안에있는 입력란의 경우 (예 : text.title.1.font). 테이블의 수준이하는 경우깊이 중첩 된 테이블에 오류없이 액세스합니까?
if text.title.1.font then ... end
를 사용하는 경우에도이 "인덱스 글로벌 '텍스트'에 대한 시도 (nil의 값)"와 같은 오류가 발생 것이 실제로 존재한다. 물론 테이블의 각 레벨의 존재를 확인하려고 시도 할 수도 있지만 다소 번거로운 것처럼 보입니다. 같은 개체를 참조 할 때 오류를 트리거하는 대신 값이 될 수 있으므로 안전하고 예쁘게 처리 할 수 있는지 궁금합니다.
'debug.setmetatable (전무 {__index = 함수() 단부})' –
Autotables/Autovivification (참조 [1] (http://stackoverflow.com/a/21287623/1244588) 또는 [2 ] (http://lua-users.org/wiki/AutomagicTables))도 대부분의 경우 꽤 잘 작동하지만'nil' 메타 테이블을 수정하거나 디버그 라이브러리를 요구하지 않습니다. 그런데'1'은'.' 또는':'구문에 유효하지 않습니다. 색인이 붙은 색인은 문자 ('a-Z') 나 밑줄 문자로 시작해야합니다. ([3] (http://www.lua.org/manual/5.2/manual.html#3.1)) – dualed