Swift. Массивы. Срезы (ArraySlice)
From AsIsWiki
(Difference between revisions)
Line 1: | Line 1: | ||
<div style='max-width:700px;text-align:justify;'> | <div style='max-width:700px;text-align:justify;'> | ||
[[Swift. Массивы. Базовые свойства и методы|Назад]] · | [[Swift. Массивы. Базовые свойства и методы|Назад]] · | ||
− | [[Swift | + | [[Swift|Оглавление]] · |
[[Swift. Множества. Создание и удаление|Дальше]] | [[Swift. Множества. Создание и удаление|Дальше]] | ||
Line 45: | Line 45: | ||
---- | ---- | ||
[[Swift. Массивы. Базовые свойства и методы|Назад]] · | [[Swift. Массивы. Базовые свойства и методы|Назад]] · | ||
− | [[Swift | + | [[Swift|Оглавление]] · |
[[Swift. Множества. Создание и удаление|Дальше]] | [[Swift. Множества. Создание и удаление|Дальше]] | ||
</div> | </div> |
Latest revision as of 13:34, 19 March 2022
Назад · Оглавление · Дальше
ArraySlice - тип результата, при получении фрагмента массива:
var a = Array(1...10) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] var b = a[4...6] // [5, 6, 7] type(of: a) // Array<Int>.Type type(of: b) // ArraySlice<Int>.Type
ArraySlice не копирует исходный массив Array, а ссылается на его подмножество
(вернее, на ту же самую область памяти). Это позволяет не плодить излишние копии данных.
Если на Array ссылается ArraySlice, то удалить экземпляр Array не получится,
пока не будут удалены все слайсы, ссылающиеся на него.
Слайсам доступны все возможности массивов, но для создания независимой копии,
слайс лучше преобразовать в массив:
var a = Array(1...10) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] var b = a[4...6] // [5, 6, 7] type(of: b) // ArraySlice<Int>.Type var m = Array(b) // [5, 6, 7] type(of: m) // Array<Int>.Type
Индексы ArraySlice соответствуют индексам исходной коллекции:
var a = Array(1...10) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] var b = a[4...6] // [5, 6, 7] b[0] // error b[4] // 5
Назад · Оглавление · Дальше