더 추상적 이해하는 메타 테이블하지만 table_A 가정에만 설정 데이터 구조 루아가있다, table_B이 두 테이블, table_A 분명히 불가능 table_B을 운영하는 경우 에 사람들 사이에 관계가 없기 때문에, 세트는 table_a table_b 소자 테이블 될 경우 table_a table_b는 소자 내부에 작동 할 수 있으며, 심지어 테이블 요소 (2)의 내부는 피연산자 나타난 요소 계산 구 배치 : setmetatable (table_a, table_b) 가 메타 테이블을 다음에 요소 방법 . 1 .__ 인덱스 - -이 방법은 주로 테이블에 액세스하는데 사용된다. 메타 테이블 설정 키는 테이블에서 메타 테이블에 의해이 키의 값을 얻기 위해 2 이다 .__와 newIndex - -이 방법은 주로 테이블 업데이트입니다. 할당에 테이블 인덱스는, 인터프리터가 조회 __newIndex 메소드를 호출 존재하는 경우, 호출 할당 작업 을 MyTable = {}; - 일반 테이블 mymetatable은 = {= __metatable " 안녕 " }; - 메타 테이블 setmetatable(MYTABLE, mymetatable) - mymetatable 요소 MYTABLE 테이블 배열 을 MyTable = setmetatable ({}, {}) - 로도 쓸 수 getmetatable (MYTABLE) - 반환 mymetatable - 와 __index 키 로컬 table_a을 = {K1 = " 헬로 " } 로컬 table_b = K2 = { " 세계 " } setmetatable (table_a 상기 __index = { table_b}) 전단 (table_A.k1) 전단 (table_A.k2가) - __index 함수는이다 함수 fun1 (표 , 키) 인쇄 (표," \ N- " , 키) 반환 " 안녕하세요 " 최종 지역 table_a = {K1 = " 세계 " } setmetatable (table_a의 __index = {} fun1) - fun1하는 K1과 table_a를 매개 변수로 전달되는 인쇄 (table_A.k2) - - 루아 테이블 룩업 규칙 엘리먼트는, 실제로, 세 단계는 다음과 같다 : - -이 표 1. 분석 __index 소자에있어서, 상기 방법은 전무, 전무가 리턴 __index 인 경우 - __index 경우 - 방법은 테이블이 2.3 테이블 조회 단계입니다 반환 - 테이블이 발견되면 계속 찾을 수 없습니다, 해당 요소를 반환 찾을 2. - - - 더가있는 경우 3. 테이블 메타 테이블 여부를 확인하지 않으려면 원 테이블 반환 전무는 메타 테이블은 계속됩니다.
키와 --- 2 .__ 때와 newIndex
로컬 table_A = {K1 = "안녕하세요"}
로컬 table_B = {}
table_A = setmetatable (table_A {__와 newIndex = table_B})
table_A.k1 = "hihi"
table_A.k2 = "하하"
인쇄 ( "修改后的是", table_A.k1, table_A.k2, table_B.k2)
- __newindex는 기능입니다
fun4 함수 (테이블, 키 값)
인쇄 ( "n \"테이블, 키 값)
최종
로컬 table_A = {K1 = "안녕하세요"}
setmetatable (table_A {__와 newIndex = fun4})
table_A.k2 = "좋은"