0

我想知道当我编写这样的临时变量时有什么区别(这些只是示例):

版本1

for each tempEnemy in enemyManager.enemies {
var tempX:int = tempEnemy.x;
}

或这个:

版本2

for each tempEnemy in enemyManager.enemies {
tempEnemy.oldX = tempEnemy.x;
}

什么是错和对?目前我像第 2 版一样编写它,我不确定是否应该将其更改为第 1 版。有人可以帮我解决这个问题吗?我知道大多数开发人员都像第 1 版那样写,但我有点困惑,因为我完全不知道第 1 版。如果我使用第 1 版,这是否意味着我的值显式存储在一个临时变量中,该变量在每个周期中都会被清除?

4

2 回答 2

2

另外... 添加 :variableType (int, String, Number 等) 有助于代码提示和调试。

于 2011-11-12T03:24:24.853 回答
1

在版本 1 中,声明:

var tempX:int

定义一个变量,该变量仅在它所在的 for(或 for-each)循环的迭代中持续。每次迭代tempX都被定义,给定一个来自Enemy对象的值,最后将其留给垃圾回收。

在版本 2 中,您引用了附加到Enemy由名为 的临时变量引用的对象的两个变量tempEnemy

在这两个版本中,对Enemy对象 tempEnemy 的引用被重新分配给下一次迭代的Enemy对象。

每种方法都有其优点。从内存的角度来看,版本 2 可能更好,因为它一遍又一遍地更改现有变量,而不是创建一个在每次迭代结束时丢弃的新变量。另一方面,版本 1 不需要您oldX在其类变量中定义,如果没有这些类型的变量,这通常会变得很糟糕。

代码的最佳实践基于 (a) 与需要能够阅读和理解代码的其他程序员合作,以及 (b) 离开项目并稍后再回来,您需要能够阅读和理解您自己的代码。对于您不打算共享的短项目,版本 2 还可以(并且可能更节省内存),但任何大型项目都应该使用更像版本 1 的东西。

另一个考虑因素是,除了定义(设置)的函数之外,您是否要在任何地方使用该变量?如果不是,则不需要将其存储在对象中,该对象再次指向版本 1。

于 2011-11-12T03:19:13.447 回答