iOS разработчик, который делится фишками, своим опытом и опытом других.
В этом канале вы сможете найти истории из жизни, подходы к реализации а также новости и тренды из мира iOS-разработки
Авторский канал, iOS разработка
Вопрос со скриншота не такой простой на первый взгляд, как кажется
😉Но и для этого есть объяснение, всё дело в том, что:
После dropFirst() у нас будет не Array, а ArraySlice. Тип ArraySlice позволяет быстро и эффективно выполнять операции над разделами большего (исходного) массива.
Вместо копирования элементов среза в новое хранилище, экземпляр ArraySlice представляет собой вид на хранилище исходного массива.
А поскольку ArraySlice представляет тот же интерфейс, что и Array, вы можете выполнять над срезом те же операции, что и над исходным массивом.
Это означает, что элемент по индексу 0 в ArraySlice — это тот же элемент по индексу 0 из исходного массива.
Поэтому во время выполнения этого кода у нас будет ошибка в рантайме.
Это происходит потому, что ArraySlice не содержит элемента с индексом 0 исходного массива, а только элементы с индексами 1 и 2.
Если мы хотим получить первый или последний индекс получившегося фрагмента безопасным способом, мы должны использовать startIndex и endIndex. Ну, ещё можно использовать Array для доступа к нужному элементу (кому как больше нравится).
📖 Кстати, есть отличная статья, в которой рассматривается больше деталей.
@iOS Dev