【发布时间】:2021-02-02 10:39:05
【问题描述】:
R 是否允许在 while 语句中定义变量?只要两个条件之一为真,我就有一个 while 循环应该继续。但是,我还需要 while 循环中两个条件的结果。计算条件的函数计算量很大,因此不能简单地重新计算它们。
while (a = conditionA() || b = conditionB())
{
do_some_work(a)
some_more_work(a, b)
}
我目前的解决方法如下。
a = conditionA()
b = conditionB()
while (a || b)
{
do_some_work(a)
some_more_work(a, b)
a = conditionA()
b = conditionB()
}
但是,你们都明白这个解决方案只是感觉不对。其中,它污染了 while 循环之外的范围,并且不希望添加不必要的代码行。
或者,我们可以使用repeat,如评论中提到的帖子中所述。虽然这样可以避免污染循环外的范围,但在 IMO 中,它的可读性不如在 while 语句中定义变量。
repeat
{
a = conditionA()
b = conditionB()
if (!a && !b)
break
do_some_work(a)
some_more_work(a, b)
}
【问题讨论】:
-
也许这会有所帮助:do-while loop in R
-
对我来说,第二个块是在
R中使用while的惯用方式。此外,这也是我在C++中使用的方式,因为编译器没有任何好处,而且对我来说更具可读性。我想这是一个品味问题。
标签: r while-loop