루아 튜토리얼 원문 중 도무지 해석이 안 되는 부분이 있습니다.
Programming in Lua 원문을 보다 도저히 해석이 되지 않는 부분이 있습니다. 해당 부분은 Table-Access Metamethods 관련 부분으로, 전반적으로 metamethod에 대한 간략한 설명을 담고 있습니다. 원문은 아래와 같습니다:
The metamethods for arithmetic and relational operators all define behavior for otherwise erroneous situations. They do not change the normal behavior of the language. But Lua also offers a way to change the behavior of tables for two normal situations, the query and modification of absent fields in a table.
otherwise 부분부터 해석이 제대로 되지 않습니다. 최대한 해석을 해봐도 __index와 같은 메타메소드나 __add같은 메타메소드 전부 에러가 날 상황을 정의하는 것이 똑같은데, 어째서 이 둘을 구분해서 설명하는지 모르겠습니다.
처음엔 번역사이트에 질문하려 했으나, 해당 부분은 오히려 루아에 대해 잘 아는 프로그래머분들이 더 잘 답변해주지 않을까 생각해 이 곳에 올립니다. 영어를 잘 아시는 분, 혹은 해당 부분이 루아의 어떤 부분에 대해 설명하는 건지 유추 가능하신 분의 도움이 필요합니다.
번역하자면 "산술/관계 연산자에 대한 메타메소드는
번역하자면 "산술/관계 연산자에 대한 메타메소드는 정의하지 않으면 에러날 상황에 대한 동작을 정의한다."
간단히 말하면 __add 메타메소드가 정의되지 않으면 s1 + s2와 같은 구문에서 에러가 발생해서 더 이상 프로그램이 실행되지 않습니다.
반면에 __index 메타메소드는 정의되지 않아도, 기본 기능이 있어 구문 에러가 발생하지 않고 프로그램이 잘 실행됩니다.
막힌 속이 뚫리는 기분입니다. 답변 감사합니다!
막힌 속이 뚫리는 기분입니다. 답변 감사합니다!
댓글 달기