Lua中的面向对象[2]:使用指针

来源:互联网 发布:爱情是如何产生的知乎 编辑:程序博客网 时间:2024/05/01 04:28
local TBaseClass = {a = 1,b = 2,}function TBaseClass:fun1()print("TBaseClass:fun1");print(tostring(self));print(tostring(TBaseClass));print(self.a.." -> self.a");print(self.b.." -> self.b");end;function TBaseClass:create()local tb = {};setmetatable(tb, {__index = self,})tb.super = self;return tb;end;TBaseClass:fun1();local pBaseClass = TBaseClass:create();pBaseClass:fun1();print(pBaseClass.a.." ->pBaseClass.a");print(pBaseClass.b.." -> pBaseClass.b");pBaseClass.a = 3;pBaseClass.b = 4;TBaseClass:fun1();pBaseClass:fun1();pBaseClass.super:fun1();


输出结果是


TBaseClass:fun1
table: 0290B4A8
table: 0290B4A8
1 -> self.a
2 -> self.b
TBaseClass:fun1
table: 0290B700
table: 0290B4A8
1 -> self.a
2 -> self.b
1 ->pBaseClass.a
2 -> pBaseClass.b
TBaseClass:fun1
table: 0290B4A8
table: 0290B4A8
1 -> self.a
2 -> self.b
TBaseClass:fun1
table: 0290B700
table: 0290B4A8
3 -> self.a
4 -> self.b
TBaseClass:fun1
table: 0290B4A8
table: 0290B4A8
1 -> self.a
2 -> self.b


其实就是弄了一个新的表, 如果在查找值的时候自己没有, 就会从__index的那个表里去查询. 相当于他的父类


0 0