【发布时间】:2010-09-26 03:44:03
【问题描述】:
我经常只想触发某个函数一次,但我需要从另一个重复调用的函数中触发它。例如,拍摄某物的快照以备后用。我通常通过设置一个全局布尔值来做到这一点。
我想知道我这样做的方式是否真的是最好的方式?
我似乎记得读过全局变量不好,全局布尔变量更糟糕!
不管怎样,我通常是这样完成触发某个方法一次的:
在我最初的一组变量中...
private var myStatus:Boolean = false;
然后,在经常被调用的函数中......
if (!myStatus) {
doMyFunction();
myStatus = true;
}
这对我来说似乎很合乎逻辑,但它是正确的吗?
更新:嗯,根据我从您的回答中了解到的情况,我现在不是检查全局布尔变量,而是首先检查 XML 节点是否存在(我将图像存储在 XML 结构中在发生任何写入磁盘之前),如果没有,那么我将使用 base64 编码的图像数据附加一个新节点。我仍然设置了一个布尔标志,以便稍后我可以在需要时用用户编辑的图像数据覆盖空白图像。它完美地工作。谢谢大家的帮助!
我现在也对在某些情况下使用该特定(线程不安全)系统感到更加自在。
【问题讨论】:
标签: language-agnostic loops boolean