count
:
var favoriteGenres: Set = ["Рок", "Классика", "Неоклассика"]
print("У меня есть \(favoriteGenres.count) любимых жанров музыки.")
// Выведет "У меня есть 3) любимых жанров музыки."
count
равно 0:
if favoriteGenres.isEmpty {
print("Я люблю жить в тишине.")
} else {
print("У меня есть определённые музыкальные предпочтения.")
}
// Выводит "У меня есть определённые музыкальные предпочтения."
insert(_:)
:
favoriteGenres.insert("Джаз")
// favoriteGenres теперь содержит 4 элемента
remove(_:)
, который убирает элемент из множества и возвращает убранное значение или nil
, если множество его не содержит. Опциональность возвращаемого значения связана с тем, что множество могло и не содержать такого элемента.
removeAll()
. Этот метод, очевидно, ничего не возвращает.
if let removedGenre = favoriteGenres.remove("Рок") {
print("\(removedGenre)? Я закончил с ним.")
} else {
print("Мне никогда это и не нравилось.")
}
// Выведет "Рок? Я закончил с ним."
if let removedGenre = favoriteGenres.remove("Хард рок") {
print("\(removedGenre)? Я закончил с ним.")
} else {
print("Мне никогда это и не нравилось.")
}
// Выведет "Мне никогда это и не нравилось."
contains(_:)
.
if favoriteGenres.contains("Попса") {
print("Я люблю быть как все.")
} else {
print("Здесь неособенно попсово.")
}
// Выведет "Здесь неособенно попсово."
for genre in favoriteGenres {
print("\(genre)")
}
Set
в Swift не имеет заданного порядка. Для итерирования по значениям множества в определённом порядке используйте метод sorted()
, который возвращает элементы множества в виде массива, отсортированного с помощью оператора <.
for genre in favoriteGenres.sorted() {
print("\(genre)")
}
var favoriteGenres: Set = ["Рок", "Классика", "Неоклассика"]
favoriteGenres.insert("Рок")
print(favoriteGenres)
Как видим, ошибки не будет, но множество останется прежним. Кроме того, можно заметить, что к элементам множества нельзя получить доступ по индексу, так как множество не сохраняет порядок элементов.
intersection(_:)
для создания нового множества только со значениями, которые являются общими для обоих множеств.symmetricDifference(_:)
для создания нового множества только со значениями, которые содержатся в обоих множествах, но не являются общими для обоих множеств.union(_:)
для создания нового множества только со значениями из обоих множеств.subtracting(_:)
для создания нового множества со значениями, которых нет в определённом множестве.
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]
oddDigits.union(evenDigits).sorted()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
oddDigits.intersection(evenDigits).sorted()
// []
oddDigits.subtracting(singleDigitPrimeNumbers).sorted()
// [1, 9]
oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted()
// [1, 2, 9]
isSubset(of:)
для определения того, все ли значения одного множества содержатся в определённом множестве.isSuperset(of:)
для определения того, все ли значения одного множества содержатся в определённом множестве.isStrictSubset(of:)
и isStrictSuperset(of:)
для определения того, является ли множество подмножеством или надмножеством, но без совпадения с конкретным множеством.isDisjoint(with:)
для определения того, что два множества не имеют никаких общих элементов.
let houseAnimals: Set = ["🐶", "🐱"]
let farmAnimals: Set = ["🐮", "🐔", "🐑", "🐶", "🐱"]
let cityAnimals: Set = ["🐦", "🐭"]
houseAnimals.isSubset(of: farmAnimals)
// true
farmAnimals.isSuperset(of: houseAnimals)
// true
farmAnimals.isDisjoint(with: cityAnimals)
// true