Swift массивы

Описание:

Массив — это упорядоченная коллекция однотипных элементов, для доступа к которым используются индексы этих элементов. Упорядоченной называется коллекция, в которой элементы располагаются
в порядке, заложенном разработчиком.

 

Синтаксис массива в swift

[значение_1, значение_2, ...,значение_N]
Литерал массива указывается в квадратных скобках, а значения отдельных элементов в нем разделяются запятыми Массив может содержать произвольное количество элементов одного типа
Индексы значений присваиваются автоматически в зависимости от порядка следования элементов

 

Массивы хранятся в переменных и константах, поэтому для их объявления используются операторы var и let.
Для создания неизменяемого массива (состав и значения элементов такого массива невозможно изменить) используйте оператор let, в противном случае — оператор var.

 

Пример создания массива swift

 

let months = ["January", "February", "Mash", "April", "May", "June", "Juley", "August", "September", "October", "November", "December"]

 

Явное указание типа элементов массива
Как при использовании фундаментальных типов данных, при объявлении переменных и констант Swift может автоматически определять тип элементов объявляемого массива по инициализируемым значениям. При необходимости можно явно указать тип данных элементов.
Существует две формы указания типа массива (и типов входящих в него элементов).
 

СИНТАКСИС
Полная форма записи:
var имяМассива: Array<ТипДанных>
Краткая форма записи:
var имяМассива: [ТипДанных]

В обоих случаях объявляется массив, элементы которого должны иметь указанный тип данных Тип массива в этом случае будет равен [ТипДанных] (с квадратными скобками) или Array<ТипДанных> Оба обозначения типа массива эквивалентны Типом каждого отдельного элемента является ТипДанных (без квадратных скобок).
При использовании данного синтаксиса массив объявляется, но его значение не инициализируется. Объявленный массив можно использовать только после того, как ему будет присвоено некоторое значение.
Это можно сделать в том же выражении, что и объявление с указанием

 

Примеры

var arr: [String] = ["January", "February", "Mash", "April", "May", "June", "Juley", "August", "September", "October", "November", "December"]

var Array: Array<Int>

Array =  [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

 

Типом массива является тип-значение (value type), а не тип-ссылка (reference type). Это означает, что при попытке скопировать или передать значение массива создается его копия, с которой и происходит вся дальнейшая работа

 

Создание пустого массива

Если перед вами стоит цель получить пустой массив, то он должен инициализироваться значением, не содержащим каких-либо элементов. Для этого можно использовать один из следующих способов:
‰‰ Явно указать тип создаваемого массива и передать ему значение [].
‰‰ По аналогии пустого значения одного из фундаментальных типов использовать специальную функцию (вроде Int() для целочисленного типа), но при этом наименование типа заключить в квадратные скобки, так как массив имеет тип данных [ТипДанных]

 

Сравнение массивов

Массивы, так же как значения фундаментальных типов данных, можно сравнивать между собой. Два массива являются эквивалентными, если:
‰‰ Количество элементов в сравниваемых массивах одинаково.
‰‰ Каждая соответствующая пара элементов эквивалентна.

 

Слияние массивов

Со значением массива, как и со значениями фундаментальных типов данных, можно проводить различные операции. Одной из них является операция слияния, при которой значения двух массивов сливаются в одно, образуя новый массив. Обратите внимание на несколько моментов:
‰‰ Результирующий массив будет содержать значения из обоих массивов, но индексы этих значений могут не совпадать с родительскими.
‰‰ Значения элементов подлежащих слиянию массивов должны иметь один и тот же тип данных.

Операция слияния производится с помощью уже известного оператора сложения (+), как показано в примере ниже
// создаем два массива
let charsOne = ["a", "b", "c"] ["a", "b", "c"]
 let charsTwo = ["d", "e", "f"] ["d", "e", "f"]
 let charsThree = ["g", "h", "i"] ["g", "h", "i"]
 // создаем новый слиянием двух
 var alphabet = charsOne + charsTwo ["a", "b", "c", "d", "e","f"]
 // сливаем новый массив со старым
 alphabet += charsThree ["a", "b", "c", "d", "e","f", "g", "h", "i"]
alphabet[8] "i"
Полученное в результате значение массива alphabet

 

Доступ к элементам массива


Для доступа к отдельному элементу массива необходимо использовать индекс данного элемента, заключенный в квадратные скобки и указанный после имени массива

С помощью индексов можно получать доступ к элементам массива не только для чтения, но и для изменения. Попытка модификации массива, хранящегося в константе, вызовет ошибку.

 

Многомерные массивы swift
Элементами массива могут быть не только значения фундаментальных
типов, но и другие массивы. Массивы, содержащие в себе другие массивы, называются многомерными. Необходимо обеспечить единство типа всех вложенных массивов.
Рассмотрим пример
 

 var arrayOfArrays = [[1,2,3], [4,5,6], [7,8,9]]

В данном примере создается массив, содержащий массивы типа [Int] в качестве своих элементов. Типом основного массива arrayOfArrays является [[Int]] (с удвоенными квадратными скобками с каждой
стороны).
Для доступа к элементу многомерного массива необходимо указывать несколько индексов

var arrayOfArrays = [[1,2,3], [4,5,6], [7,8,9]]
// получаем вложенный массив
 arrayOfArrays[2] [7, 8, 9]
// получаем элемент вложенного массива
 arrayOfArrays[2][1] 7
Строка arrayOfArrays[2] возвращает третий вложенный элемент массива arrayOfArrays. Строка arrayOfArrays[1][2], использующая два индекса, возвращает второй элемент подмассива, содержащегося
в третьем элементе массива

 

Базовые свойства и методы массивов
Массивы — очень функциональные элементы языка. Об этом позаботились разработчики Swift, предоставив нам набор свойств и методов, позволяющих значительно расширить их возможности в сравнении с другими языками.

 

Свойство count возвращает количество элементов в массиве

var someArray = [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
количество элементов в массиве
someArray.count 5

 

Свойства first и last возвращают первый и последний элементы массива

 var someArray = [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
 // возвращает первый элемент массива
 someArray.first 1
 // возвращает последний элемент массива
someArray.last 5

 

С помощью метода append() можно добавить новый элемент в конец массива

var someArray = [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
someArray.append(6) [1, 2, 3, 4, 5, 6]

 

Если массив хранится в переменной (то есть является изменяемым), то метод insert() вставляет в массив новый одиночный элемент с указанным индексом.

 var someArray = [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
// вставляем новый элемент в середину массива
 someArray.insert(100, atIndex: 2) [1, 2, 100, 3, 4, 5]
При этом индексы массива пересчитываются, чтобы обеспечить их последовательность.
 

 

Так же как в случае изменения массива, методы removeAtIndex(), removeFirst() и removeLast() позволяют удалять требуемые элементы. При этом они возвращают значение удаляемого элемента

var someArray = [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
// удаляем третий элемент массива (с индексом 2)
someArray.removeAtIndex(2) 3
 // удаляем первый элемент массива
 someArray.removeFirst() 1
 // удаляем последний элемент массива
 someArray.removeLast() 5
 /* итоговый массив содержит
 всего два элемента */
 someArray [2, 4]
После удаления индексы оставшихся элементов массива перестраиваются. В данном случае в итоговом массиве someArray остается всего два элемента с индексами 0 и 1.
Если массив является неизменяемым (хранится в константе), то можно использовать методы dropFirst() и dropLast(), возвращающие новый массив, в котором отсутствует несколько первых или последних элементов. При этом если в качестве параметра в функцию ничего не передавать, то из результата удаляется один элемент. В противном случае — столько элементов, сколько передано в метод

let someArray = [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
// удаляем последний элемент
someArray.dropLast() [1, 2, 3, 4]
// удаляем три первых элемента
 var newArray = someArray.dropFirst(3) [4, 5]
someArray [1, 2, 3, 4, 5]
При использовании данных методов основной массив someArray, с которым выполняются операции, не меняется.
Метод contains() определяет факт наличия некоторого элемента в массиве и возвращает Bool в зависимости от результата

 let intArray = [1, 2, 3, 4, 5, 6] [1, 2, 3, 4, 5, 6]
// проверка существования элемента
let resultTrue = intArray.contains(4) true
 let resultFalse = intArray.contains(10) false
Метод indexOf() сообщает индекс первого вхождения искомого элемента в рассматриваемом массиве. Так как искомый элемент может отсутствовать, метод возвращает опциональное значение
Если элемент отсутствует, то возвращается nil

let intArray = [1, 2, 3, 4, 5, 6, 4, 5, 6] [1, 2, 3, 4, 5, 6, 4, 5, 6]
 // поиск первого вхождения элемента
let result = intArray.indexOf(4) 3
let resultNIL = intArray.indexOf(99) nil

Значение 4 первый раз встречается в массиве intArray в элементе с индексом 3. Значение 99 в массиве intArray отсутствует, в результате возвращается nil.

 

Для поиска минимального или максимального элемента в массиве применяются глобальные методы minElement() и maxElement(). Данные методы работают только в том случае, если элементы массива можно сравнить между собой

let intArray = [3, 2, 4, 5, 6, 4, 7, 5, 6] [3, 2, 4, 5, 6, 4, 7,
5, 6]
// поиск минимального элемента

intArray.minElement() 2
// поиск максимального элемента
 intArray.maxElement() 7
 

 

Сопоставлять можно значения тех типов данных, которые являются хешируемыми, то есть в них должен присутствовать функционал вычисления хеша для значения Большинство фундаментальных типов данных поддерживают хеширование Хеш обеспечивает возможность сравнения (сопоставления) различных значений одного и того же типа При его вычислении собственное значение параметра по специальному алгоритму преобразуется в числовое значение и помещается в свойство hashValue параметра Для доступа к хешу параметра достаточно вызвать указанное свойство:
var a: Float = 3.5
a.hashValue // 1 080 033 280
Данный функционал обеспечивается стандартным для Swift протоколом Hashable

Чтобы изменить порядок следования всех элементов массива на противоположный, используйте метод reverse()

var someArray = [1, 3, 5, 7, 9] [1, 3, 5, 7, 9]
someArray.reverse() ReverseRandomAccess
Collection<Array<Int>>
Удивительно, но метод reverse() возвращает вовсе не массив типа [Int], а некое неизвестное нам значение типа ReverseRandomAccessCollection.

Категория Технические науки лекции / Swift язык программирования iOS
Дата размещения22.09.2016
Количество просмотров51
Статью добавил пользователь Diplom
Пожаловаться на публикацию
Еще статьи из данной категории
Предыдущие статьи Следующие статьи
Комментарии к публикации
Комментариев к публикации нет...
Поиск статей в каталоге
расширенный поиск статей
Категории каталога статей
Общественные и гуманитарные науки лекции
Лекций по бухгалтерскому учету
Лекции реклама
Лекции по аудиту
Экономика организации предприятия лекции
Конспект лекций по экономике
Лекции по социологии
Стратегическое планирование лекции
Лекции по бжд для вузов
Социальная антропология учебник
Лекции по pr
Государственное регулирование экономики учебник
Музыковедение
Лекции по этнологии и этнографии
Методика преподавания биологии
Музееведение
Философия лекции
Политология лекции
Менеджмент и управление
Труд и занятость
Русский язык и культура речи
Лекции по праву
Лекции по истории
Новости сайта
  • 01.09.2016
    Поздравляем всех кто учиться и всех кто учить с началом учебного сезона.
  • 01.06.2016
    Поздравляем с началом лета и каникулами всех учащихся и преподавателей!
  • 01.05.2016
    Поздравляем посетителей нашей доски объявлений и образовательного портала с наступающими майскими праздниками: Днем Труда и Днем Победы!
  • 08.03.2016
    Поздравляем с праздником Весны. Желаем весеннего настроения, счастья, радости и красоты.
  • 23.02.2016
    Дорогие мужчины! Женская половина нашего коллектива поздравляем мужчин с Днём защитника отечества!
Статистика каталога статей
Всего статей: 3214
Добавлено сегодня: 0
Добавлено вчера: 0
Статистика каталога
Всего объектов: 1016
Добавлено сегодня: 0
Добавлено вчера: 0
Статистика объявлений
Всего объявлений: 678
Добавлено сегодня: 0
Добавлено вчера: 0
Подписка на рассылку
Ваше имя
Ваш Email