元表 理解

来源:互联网 发布:地板 知乎 编辑:程序博客网 时间:2024/06/13 23:34

1.

local t1 = {};

local t2 = {value1= 0};

setmetatable(t1, t2);

这种写法会让t1跟t2没有任何联系,比如t1.value1的值依旧为nil;同时,给t1.value1赋值也不会影响到t2。

2.

setmetatable(t1, {__index = t2});

这种写法能让访问t1不存在的值得时候能取到t2的值,但是对t1不存在的值赋值时不会影响t2的值。

3.

setmetatable(t1, {__index = t2,  __newxindex = t2});

这种是彻底把t1跟t2联系起来,对t1不存在的值赋值会影响到t2。

4.

当把t2清空后,比如t2 = nil,并不会影响t1。

0 0
原创粉丝点击