我想检查一个循环中的一个条件,并在第一次遇到它时执行一个代码块。之后,循环可能会重复,但代码块应该被忽略。有没有这样的模式?当然,在循环外声明一个标志很容易。但是我对一种完全存在于循环内的方法很感兴趣。
这个例子不是我想要的,有没有办法把定义去掉在循环之外?
bool flag = true;
for (;;) {
if (someCondition() && flag) {
// code that runs only once
flag = false;
}
// code that runs every time
}
6条答案
按热度按时间dwthyt8l1#
这是一个相当复杂的过程,但是正如您所说的,这是应用程序主循环,我假设它位于一个调用一次的函数中,所以下面的代码应该可以工作:
sauutmhj2#
莫比乌斯的答案有一个不那么复杂的版本:
你也可以用
++
写一个bool,但显然是deprecated。jm81lzqq3#
一种可能更简洁的编写方法(尽管仍然使用变量)如下所示
static
允许你在循环中声明变量,IMHO看起来更简洁,如果你的代码每次执行时都做了一些可测试的改变,你可以去掉变量,写成这样:jmp7cifd4#
输出
p8ekf7hl5#
如果您知道只想运行这个循环一次,为什么不使用
break
作为循环中的最后一条语句。b09cbbtk6#
如果您希望代码没有任何外部标志,那么您需要在条件的最后一条语句中更改条件的值。(代码片段第7行)