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
结果各不相同
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
结果各不相同
相关文章推荐
- Lua中使用table.concat连接大量字符串实例
- Lua中使用table.concat连接大量字符串实例
- C函数传递一个table给lua代码中使用。
- c/c++_Lua交互----关于Lua中table类型的使用实例
- 【本·伍德Lua专栏】补充的基础09:使用table.concat将一个大的字符串
- Spring自定义属性编辑器CustomEfitorConfigurer使用实例
- 利用CVSNT在Eclipse中使用CVS--3.创建一个CVS实例
- 在 WebService 中使用属性发布一个方法
- 在 WebService 中使用属性发布一个方法
- 使用jsf + hibernate制作一个login实例教学录像
- tcl/tk实例详解——修改目录下所有文件(使用一个字符串代替另外一个)
- JSP中使用JavaBean的一个实例
- 使用动态属性还是资源?似乎是一个问题。
- 使用Buffalo集成Spring写的一个登录实例
- C#中综合使用字段,属性和方法的实例
- 一个使用iptables配置NAT的实例
- CREATE TABLE AS语句与循环游标的使用实例
- js入门·循环与判断/利用函数的简单实例/使用对象/列举对象属性的名称
- 最近在使用sps类库过程中发现了一个让我比较疑惑的问题(有关items属性的)
- 一个使用游标的存储过程的实例