Swift. Массивы. Срезы (ArraySlice)

From AsIsWiki
(Difference between revisions)
Jump to: navigation, search
Line 2: Line 2:
 
[[Swift. Массивы. Базовые свойства и методы|Назад]] ·
 
[[Swift. Массивы. Базовые свойства и методы|Назад]] ·
 
[[Swift. Массивы|Оглавление]] ·
 
[[Swift. Массивы|Оглавление]] ·
[[Swift. Множества. Создание|Дальше]]
+
[[Swift. Множества. Создание и удаление|Дальше]]
  
  
Line 46: Line 46:
 
[[Swift. Массивы. Базовые свойства и методы|Назад]] ·
 
[[Swift. Массивы. Базовые свойства и методы|Назад]] ·
 
[[Swift. Массивы|Оглавление]] ·
 
[[Swift. Массивы|Оглавление]] ·
[[Swift. Множества. Создание|Дальше]]
+
[[Swift. Множества. Создание и удаление|Дальше]]
 
</div>
 
</div>

Revision as of 17:57, 4 November 2021

Назад · Оглавление · Дальше


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



Назад · Оглавление · Дальше

Personal tools
Namespaces

Variants
Actions
Navigation
Tools