lua --- __newindex 的使用规则

1、如果 __newindex 是一个函数,在给 table 不存在的字段赋值的时候,会调用这个函数
2.如果 __newindex 是一个table,在给 table 不存在的字段赋值的时候,会直接给 __newindex 的 table 赋值

测试用例:

 1 local Song = {name = "南山南"};
 2 
 3 local mt = 
 4 {
 5     __index = Song,
 6     __newindex = function(table, key, val)
 7         print(key .. "是一个不存在的字段,不能对其赋值!");
 8     end
 9 };
10 
11 local animal = {}
12 setmetatable(animal, mt);
13 print(animal.name);
14 animal.name = "cat";  
15 
16 local tmp = {};
17 
18 local mt1 = 
19 {
20     __index = Song;
21     __newindex = tmp;
22 };
23 local animal1 = {};
24 setmetatable(animal1, mt1);
25 print(tmp.cat);
26 animal1.cat = "Cat";
27 print(tmp.cat);

编译结果:

原文地址:https://www.cnblogs.com/luguoshuai/p/10472196.html