Свифт в л oop. Постоянная или переменная? - PullRequest
0 голосов
/ 11 июля 2020

Apple в своей документации говорит:

for index in 1...5 {
   print("\(index) times 5 is \(index * 5)")
}

«В приведенном выше примере index - это константа, значение которой автоматически устанавливается в начале каждой итерации l oop. Таким образом, индекс не нужно объявлять перед его использованием. Он неявно объявляется просто включением в объявление l oop, без необходимости в ключевом слове объявления let.

Почему они называют index константой, если ее значение изменяется внутри l oop?

Выдержка из: Apple In c. «Язык программирования Swift (Swift 5.2)». Apple Книги. https://books.apple.com/ru/book/the-swift-programming-language-swift-5-2/id881256329?l=en

1 Ответ

2 голосов
/ 11 июля 2020

Это константа, потому что вы не можете изменить ее внутри l oop. Компилятор преобразует for l oop во что-то, что означает:

var iterator = (1...5).makeIterator()
while true {
    if let index = iterator.next() {
        // the loop body goes here
    } else {
        break
    }
}

index является константой, но новый index объявляется на каждой итерации.

...