我经常只想触发某个函数一次,但是我需要从另一个被重复调用的函数中触发它。例如,拍摄某物的快照以备后用。我通常通过设置全局 boolean 值来做到这一点。
我想知道我的做法是否实际上是最好的方法?
我似乎回想起曾经读过的内容,即全局变量是错误的,而全局 boolean 变量甚至更糟!
无论如何,这就是我通常一次完成一次触发某个方法的方式:
在我最初的一组变量中...
private var myStatus:Boolean = false;
然后,在经常调用的函数中...
if (!myStatus) {
doMyFunction();
myStatus = true;
}
对我来说似乎很合逻辑,但这是对的吗?
UPDATE :好吧,根据我从您的答案中学到的知识,我现在首先检查XML节点是否存在(而不是检查全局 boolean 变量)(我将图像存储在XML结构中,然后再写入磁盘),并且,如果没有,那么我将使用base64编码的图像数据附加一个新节点。我仍然设置了一个 boolean 标志,以便以后可以根据需要用用户编辑的图像数据覆盖空白图像。它完美地工作。谢谢大家的帮助!
我现在在某些情况下使用该特定的(线程不安全的)系统也感到更加自在。
最佳答案
当您调用函数时,它应该按照您给它提供的参数执行预期的操作。如果您以完全相同的方式两次调用一个函数,则应该期望该函数能够为您提供相同的结果或执行相同的操作。
最好将一次调用依赖关系转移到多次调用函数的逻辑上。如果只需要调用一次函数,则只需调用一次。或者,将不同的参数传递给函数以指示您在做不同的事情。
关于language-agnostic - 如何一次触发一个功能……?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/354556/