Наборы swift

Описание:

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

 

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

 

При создании набора необходимо явно указать, что создается именно набор. Если переменной передать литерал набора, то Swift распознает в нем литерал массива и вместо набора будет создан массив. В связи

с этим необходимо:

·        либо явно указать тип данных набора с использованием конструкции Set<ТипДанных>, где ТипДанных — тип элементов создаваемого набора;

·        либо использовать функцию Set<ТипДанных>, которой в качестве входного передается параметр arrayLiteral, содержащий перечень элементов набора. Тип данных набора — Set<ТипДанных>.

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

 

Пример набора swift

 

/* набор, созданный путем
явного указания типа */
var breakfast: Set<String> = [«кофе», «яйцо с беконом», «хлеб»]


/* набор, созданный без явного
указания типа данных */

 

 var lunch: Set = ["суп", "рис", "рыба", "чай"]
 

Создание пустого набора

 

Пустой набор, то есть набор, значение которого не имеет элементов, создается с помощью пустого литерала набора [].

 

Var toDo: Set<String> = []

 

Доступ к набору и модификация набора

Так как набор  - это неупорядоченная коллекция элементов, не имеющая каких-либо индексов или ключей, обеспечивающих доступ к значениям, то использование синтаксиса сабскриптов невозможно.
Для создания нового значения в наборе применяется метод insert(), которому передается создаваемое значение

 

// создаем пустой набор
var musicStyleSet: Set<String> = []
добавляем к нему новый элемент
musicStyleSet.insert("Jazz")

 

 

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

 

// создание набора со значениями
var musicStyleSet: Set<String> = ["Jazz", "Hip-Hop", "Rock"]

 // удаляем один из элементов
musicStyleSet.remove("Hip-Hop")
musicStyleSet {"Jazz", "Rock"}
удаляем несуществующий элемент
musicStyleSet.remove("Classic") nil
 // удаляем все элементы набора
musicStyleSet.removeAll()

 

 

Проверка факта наличия значения в наборе осуществляется методом contains(). Данный метод возвращает значение типа Bool в зависимости от результата проверки

 

// создаем набор
var musicStyleSet: Set<String> = ["Jazz", "Hip-Hop", "Rock", "Funk"]
// проверка существования значения в наборе

if musicStyleSet.contains("Funk") {
print("ты любишь хорошую музыку")
 } else {
 print("послушай то, что я слушаю")
 }
Консоль:
ты любишь хорошую музыку

 

 

Базовые свойства и методы наборов

 

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

// набор с четными цифрами
let evenDigits: Set = [2, 4, 6, 8]
// набор с нечетными цифрами
let oddDigits: Set = [1, 3, 5, 7, 9]
// набор со смешанными цифрами
let differentDigits: Set = [3, 4, 7, 8]
 

В наборах существуют как уникальные, так и общие элементы

Для двух любых наборов можно произвести следующие операции:
‰‰

Получить все общие для обоих наборов элементы (intersect).
Получить все непересекающиеся (не общие) для обоих наборов элементы (exclusiveOr).
Получить все элементы обоих наборов (union).
Получить разницу элементов, то есть элементы, которые входят в первый набор, но не входят во второй (subtract)

 

При использовании метода intersect() создается новый набор, содержащий значения, общие для двух наборов

 

var inter = differentDigits.intersect(oddDigits).sort() [3, 7]

 

Обратите внимание, что в данном примере в одном выражении использована цепочка вызовов методов intersect() и sort().
В результате вызова метода sort() возвращается отсортированный массив, в котором наименьшие значения располагаются первыми.
Данный метод возвращает именно массив, так как набор — это неупорядоченная коллекция, где понятие порядка следования элементов отсутствует.

 

Для получения всех непересекающихся значений служит метод exclusiveOr()

var exclusive = differentDigits.exclusiveOr(oddDigits).sort() [1, 4, 5, 8, 9]

 

Для получения всех элементов из обоих наборов применяется объединяющий метод union()

 

var union = evenDigits.union(oddDigits).sort() [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

Метод subtract() возвращает все элементы первого множества, которые не входят во второе множество

var subtract = differentDigits.subtract(evenDigits).sort() [3, 7]

 

Метод isSubsetOf() определяет, является ли один набор субнабором другого
 

var aSet: Set = [1, 2, 3, 4, 5]
var bSet: Set = [1, 3]
 if bSet.isSubsetOf(aSet) {
 print("bSet – это субнабор для aSet")
 }
Консоль:
bSet – это субнабор для aSet

 

Метод isSupersetOf() вычисляет, является ли набор супернабором для другого набора

 

var aSet: Set = [1, 2, 3, 4, 5]
var bSet: Set = [1, 3]
if aSet.isSupersetOf(bSet) {
 print("aSet – это супернабор для bSet")
 }

Консоль:
aSet – это супернабор для bSet

 

Метод isDisjointWith() определяет, существуют ли в двух наборах общие элементы, и в случае их отсутствия возвращает true

 

var bSet: Set = [1, 3]
var cSet: Set = [6, 7, 8, 9]
 if bSet.isDisjointWith(cSet) {
 print("наборы bSet и cSet не пересекаются")
}
Консоль:
наборы bSet и cSet не пересекаются

 

Методы isStrictSubsetOf() и isStrictSupersetOf() определяют, является набор субнабором или супернабором, не равным указанному множеству

 

var aSet: Set = [1, 2, 3, 4, 5]
 var bSet: Set = [1, 3]
if bSet.isStrictSubsetOf(aSet) {
print("bSet - субнабор для aSet")
 }
 if aSet.isStrictSupersetOf(bSet) {
print("aSet - супернабор для bSet")
 }
Консоль:
bSet - субнабор для aSet
aSet - супернабор для bSet

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