Versus while
内容
现场
不管条件如何,您都希望至少运行一些代码一次。您可能希望更频繁地运行它,这取决于某些条件。
至少在一段时间
这里有一些使用a的解决方案金宝搏官方网站而构造,同时确保主代码块至少运行一次,即使已经满足停止条件。
N = 0;I = 1;while true doStuff();如果(i > n)打破;End I = I + 1;n = somethingElse();结束
这里有另一种方法,它颠倒了围绕条件的逻辑,并避免使用显式打破声明。相反,它必须检查才能看到这一点现状后仍然是真正的.
N = 0;I = 1;currentState = true;while currentState doStuff();currentState = (i <= n);if currentState, i = i + 1;n = somethingElse();结束结束
我想知道这个版本是否比第一个好。它长了一行现状后可以显式地设置。这可能对你们中的一些人更容易理解,而对另一些人就不那么容易理解了。
照顾使用
以确保代码doStuff至少运行一次,我们需要小心使用为循环。这样做的原因是,如果循环计数器变量为空,则保证循环代码根本不会运行。为了确保代码只运行一次,我们需要在循环之外重复代码。如果正在运行的代码就像这个例子一样,封装在另一个函数中,那么确保我们做对了就不是那么困难了。
如果我们要运行的不是一个函数,而是几个语句,那么我们必须注意复制所有代码,并确保在必须进行一些更改时更新两个集合。
doStuff将永远不会使用以下代码示例运行。
N = 0;计数= 0;doStuff();Count = Count + 1;结束
为了复制“至少运行一次”的行为,我们需要在循环之前复制代码。
N = 0;计数= 0;doStuff ();doStuff();Count = Count + 1;结束
你的风格偏好?
我不得不说,在主体中有大量可能需要复制的代码是我要避免的。因此,我将看看是否可以合理地将循环主体代码的大部分插入到另一个函数中。在那之后,我仍然对其中一种风格有轻微的偏爱,但我想先听听你的想法。
你更喜欢哪种编程风格?使用为,而在显式条件下,而与一个打破,或者你有更好的代码模式?发表你的想法在这里.
评论
如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。