#r
#r
Вопрос:
Допустим, у меня есть следующий блок кода:
x <- 0
while (x < 50){
for (i in letters){
print(i)
x <- x 10
}
}
Каков порядок операций? Применяются ли критерии остановки While, даже если в цикле for больше циклов?
Я протестировал это, и оно прошло через весь цикл for, несмотря на x
достижение 250.
Есть ли способ добавить правило, которое гласит следовать циклу while перед циклом for?
Комментарии:
1. Связанный, есть ли способ написать цикл for, который
breaks
в любой момент нарушает критерии?2.Ваш
for
цикл вложен внутрьwhile
цикла; поэтому внутреннийfor
цикл завершается первым, прежде чем вернуться к внешнемуwhile
циклу.3. «Приоритет» в этом случае основан на порядке :
while
цикл выполняется первым, затемx
увеличивается на 10, в общей сложности 26 раз, прежде чемwhile
условие будет повторно оценено. Если вы спрашиваете, может лиwhile
цикл прерывать внутреннийfor
цикл, ответ будет «нет». Если вам это нужно, тоfor (i in letters) { if (x >= 50) break; print(i); x <- x 10; }
.
Ответ №1:
Ваш for
цикл вложен внутрь while
цикла. Каждый раз, когда while
цикл входит в итерацию, управление передается его телу цикла, которое в данном случае является for
циклом. for
Затем цикл получает управление и выполняет свою итерацию. После этого for
цикл завершает свое управление и переходит обратно к while
циклу. while
Цикл определяет, сколько раз выполняется весь цикл for.
Для break
цикла for при нарушении критериев или с любой другой логикой вы можете использовать break
оператор внутри if
блока внутри тела цикла.
Ответ №2:
Поскольку (x < 50) имеет значение true при запуске, проверка условий больше не выполняется до завершения цикла for. Единственный вариант — использовать условный разрыв внутри цикла for.
for (i in letters){
if (x < 50){
break
}
print(i)
x <- x 10
}
Комментарии:
1. В целом хороший ответ, но я думаю, что
if
условие находится примерно в неправильном направлении.