您的位置:首页 > 编程语言 > Lua

lua中类的属性是table时,多个类的实例使用了同一个table属性

2014-08-07 11:02 288 查看
定义类Array:

Array = {

nextIdx = 1,
content = {}

}

function Array:new(o)

o = o or {}

setmetatable(o, self)

self.__index = self

return o;

end

测试:
a = Array:new()
b = Array:new()
a. nextIdx = 10
print(a.nextIdx)
print(b.nextIdx)
print(a.content)
print(b.content)

输出为
10
1
table: 0021D528
table: 0021D528

发现a与b的nextIdx属性不同,但content值相同,为同一个表

但是在new时再为其幅值可避免这一问题,将其修改为

Array = {

nextIdx = 1,
content = nil

}

function Array:new(o)

o = o or {}

setmetatable(o, self)

self.__index = self

o.content = {} --此处再赋值创建空表

return o;

end

调用同样测试函数结果为:
10
1
0023D668
0023D528
结果各不相同
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: