最近在学习 Haxe for Flash,并且有一些 ActionScript 3 的经验。
我注意到delete
在 AS3 中有一个操作,是否有类似delete
Haxe 的操作?是delete
关于GC的吗?Haxe 新手有什么关于内存管理的提示吗?
最近在学习 Haxe for Flash,并且有一些 ActionScript 3 的经验。
我注意到delete
在 AS3 中有一个操作,是否有类似delete
Haxe 的操作?是delete
关于GC的吗?Haxe 新手有什么关于内存管理的提示吗?
我对 Haxe 了解不多,但delete
AS3 中的操作符实际上并不会删除对象。你真的不能在 AS3 中强制解构。delete
运算符用于删除对动态对象属性的引用。例如:
var foo:Object {
a: "Hello, ",
b: "world!",
toString: function () { return a + b; }
}
foo.toString() // Hello, world!
这个匿名对象是动态的,可以添加或删除属性。很像哈希表。现在考虑以下几点:
delete foo.b;
foo.toString(); // Hello, undefined
当删除发生时,foo
释放其对属性的引用b
,使其成为undefined
. 然而, 的值b
不一定会从内存中删除。如果其他人引用了相同的值,它很可能会一直存在。因此,delete
仅删除引用,而不是实际值,因此无法强制进行垃圾收集。
Marcus 已经解释了delete
操作员的工作。如需在 Haxe 中使用,请参阅此页面。
因此,Haxe 的等价物delete foo.b
是untyped __delete__(foo, "b")
。如果您打算经常使用它,我建议您将其放入一个函数中;)