Какую переменную вставить в цикле for in

xcode

#1

Подскажите новичку по циклу for in. Вот есть пример из учебника, цитирую:

////////////////////////////////////////
Если Вам не нужно каждое значение из диапазона, то вы можете игнорировать их, используя символ подчёркивания вместо имени переменной:

let base = 3
let power = 10
var answer = 1
for _ in 1...power {
    answer *= base
}
print("\(base) to the power of \(power) is \(answer)")

// напечатает “3 to the power of 10 is 59049”

В этом примере вычисляется значение одного числа возведенное в степень другим (в данном случае 3 в степени 10). Начальное значение 1 (то есть 3 в степени 0) умножается на 3 десять раз, используя закрытый диапазон значений, который начинается с 1, и заканчивается 10. В данном случае нет необходимости знать значения счётчика во время каждой итерации цикла - он просто должен выполниться необходимое количество раз. Символ подчёркивания “_” (который используется вместо переменной цикла) игнорирует ее отдельные значения и не предоставляет доступ к текущему значению во время каждой итерации цикла.

////////////////////////////

Вопрос такой - какая переменная может быть указана вместо символа подчеркивания? Например, если я вставляю answer, то почему-то выскакивает ошибка, что левая от оператора часть выражения есть неизменяемая константа - “left side of mutating operator isn’t mutable: ‘answer’ is a ‘let’ constant
answer *= base”

Тогда, что может быть, если не answer?


#2

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#3

Сэнкс за ссылки, интересные источники. А с этим примером уже разобрался. Если вставить вместо символа подчеркивания имя переменной, то она будет означать коллективное имя для всех значений диапазона. И если это коллективное имя будет фигурировать в выражении в теле цикла, то там будут поочередно выводиться все эти значения диапазона. Поэтому похоже и происходит конфликт, что по умолчанию эта переменная в месте, где символ подчеркивания, она неявно инициализируется как константа при каждом объявлении цикла. А тут получается, что в теле цикла она должна меняться, а константы, как известно, не меняются.

Так что вставить там можно другое название, которое, как уже сказано, будет означать коллективное имя значений диапазона. Или по-другому, это наименование значений счетчика цикла. Но поскольку в данной задаче значения счетчика не нужны, то в теле цикла эта объявляемая константа не упоминается. Вместо нее задается выражение на расчет возведения числа в степень.

Таким образом, в объявлении цикла можно сделать символ подчеркивания, а можно и название переменной. Главное, чтобы потом это имя не фигурировало в теле цикла, в данной задаче.


#4

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#5

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#6

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#8
Таким образом, в объявлении цикла можно сделать символ подчеркивания, а можно и название переменной.

Это для меня пока сложно


#9

согласен, просто я назвал так для своего удобства, чтобы было понятно. Там под капотом, как и ожидалось, много разных фич


#10

paretic, спасибо за хорошие ссылки