Обложка канала

iOS Dev

iOS разработчик, который делится фишками, своим опытом и опытом других. В этом канале вы сможете найти истории из жизни, подходы к реализации а также новости и тренды из мира iOS-разработки Авторский канал, iOS разработка

iOS Dev

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