Что имеет приоритет в цикле: For или While?

#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 условие находится примерно в неправильном направлении.