2017-12-19 3 views
1

Ich habe einige Frage für Lua Metatabelle ... Dies ist mein Code:Lua Metatabelle Variable

setmetatable(t1, mb) 
setmetatable(t2, mb) 
print("t1:", getmetatable(t1)) 
print("t2:", getmetatable(t2)) 
mb.__index = mb 

print(t1.a) 
t1.a = 2 
print(t2.a) 
mb.a = 3 
print(t1.a) 
print(t2.a) 

und diese ausgegeben:

t1:  table: 00D62D88 
t2:  table: 00D62D88 
1 
1 
2 
3 

Ausgabe zeigt mir, dass T1 und T2 hat die gleiche metatable mb (gleiche Adresse), ich denke t1.a und t2.a sind mb.a, sie sind gleich variabel. Aber geben Sie t1.a einen neuen Wert, t2.a no change., Geben Sie mb.a einen neuen Wert, t3 ist change! Könnte jemand erklären, was dafür passiert?

Antwort

1

So funktioniert __index.

Wenn t eine Metatabelle m mit einem _index Eintrag, der auf einem Tisch hat s, dann lesen t.a zu s.a löst, wennt.anil ist.

+0

ja, ich habe Understanded. Vielen Dank! – ChangHao