околоiOSный канал: cmd+B, cmd+R
iOS-разработка, мотивация, статьи, мемасики :) ___ Видео материалы, тестовые задания, информация по курсу: YouTube-channel: https://www.youtube.com/c/cmdBcmdR ___ Дополнительные материалы + поддержка YouTube/Telegram канала https://boosty.to/cmdbcmdr
Більше- Підписники
- Перегляди допису
- ER - коефіцієнт залучення
Триває завантаження даних...
Триває завантаження даних...
Если неявные захваты (implicit captures) будут осуществляться по ссылке, то явные (explicit captures) - являются захватами по значению. В примере выше, в замыкании closure значение first захватывается по значению, то есть создается одноименная константа внутри замыкания. Это можно записать следующим образом - строка 19 (немного изменил нейминг для лучшего понимания). Теперь существует переменная first в окружающей/глобальной области видимости и константа first(firstСlosure) в области замыкания. first(firstСlosure) в области замыкания никак не зависит от first в окружающей/глобальной области. Именно поэтому в предыдущем примере в консоль выводилось значение «1 4». В это же время second!.value ссылается на переменную second в окружающей/глобальной области видимости. Для того, чтобы убедиться в этом, присвоим first значение nil. В консоле не увидим никаких изменений, deinit не сработал. На first до сих пор ссылается first(firstСlosure) из замыкания. Присвоим nil для значения second. В консоле увидим сообщение…
var array = [1, 2, 3, 4, 5]
for index in array.indices {
if array[index].isMultiple(of: 2) {
array.remove(at: index)
}
print(array)
}
//Консоль
//[1, 2, 3, 4, 5]
//[1, 3, 4, 5]
//[1, 3, 5]
//Swift/ContiguousArrayBuffer.swift:600: Fatal error: Index out of range
for-in определяет, что необходимо сделать 5 операций (индексы с 0 до 4)
1 итерация (индекс 0)
«1» нечетное число, поэтому в консоли видим [1, 2, 3, 4, 5]
2 итерация (индекс 1)
«2» четное, удаляем, в консоли - [1, 3, 4, 5]
3 итерация (индекс 2)
Сейчас по индексу 2 находится «4» - четное - удаляем. В консоли [1, 3, 5]
4 итерация (индекс 3)
Массив array на этот момент состоит из [1, 3, 5], обращаясь по индексу 3 ловим «Index out of range»
Такой подход объясняет, как в одном из примеров выше получилось [1, 3, 4]
Ставь лайк, если было интересно 👍
Пиши коммент, если есть что добавить/исправить 🥸- [1, 2, 3, 4, 5]
- [1, 3, 4, 5]
- [1, 3, 5]
- [1]
- [1, 2, 3, 4, 5]
- [1, 3, 4]
- [1, 3, 5]
- [1, 4, 5]
- error