LUA 메타 테이블의 메타 (VI)

 

 

더 추상적 이해하는 메타 테이블하지만 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 = "좋은"

 

 

추천

출처www.cnblogs.com/MrRightZhao/p/11301283.html