lua --- __newindex 的使用规则
Posted luguoshuai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
编译结果:
以上是关于lua --- __newindex 的使用规则的主要内容,如果未能解决你的问题,请参考以下文章