Наборы (множества, set) в Swift

Домашняя работа к главе 10

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

Задание 1

Какие из выражений не вызовут ошибок и вернут набор (т.е. функция type(of:) должна вернуть Set)

var set1 = [1, 2, 3, 4, 5]
var set2: Set = [1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
var set3: Set = ["a","c"]
var set4 = Set(arrayLiteral: -0, +0, 1, 2, 3)
var set5 = Set(arrayLiteral: 0, 1, 2, 3, 4)
Правильный ответ

  • set1 — это массив, а не набор
    type(of:set1) // Array.Type
  • set2 — вернет корректный набор, но в нем будет содержаться всего 10 элемент, а не 11, как передано в литерале (есть повторяющийся элемент «1»)
    type(of:set2) // Set.Type
  • set3 — корректный набор
    type(of:set3) // Set.Type
  • set4 — корректный набор, но как и у set2 будет исключен дублирующий элемент
    type(of:set4) // Set.Type
  • set5 — корректный набор
    type(of:set5) // Set.Type

 

Задание 2

Что будет выведено на консоль в результате выполнения кода?

var mySet:Set = []
mySet.insert(13.4)
print( type (of: mySet.count ) )
Правильный ответ

На консоль будет выведена ошибка, т.к. при создании набора не определен тип его элементов

 

Задание 3

Что будет выведено на консоль в результате выполнения кода?

var mySet2: Set = [13.4, 15.1]
print( mySet2.contains( Double(13.4) ) )
Правильный ответ

На консоль будет выведено true

Доступ закрыт

Дополнительные 3 задания доступны только подписчикам

Оформить доступ


1 Comment

  1. iamsvv:

    Опечатка в правильном ответе задания 6. Значения набора taskSet2 такие же как и taskSet1, а должны быть с 5 по 15.

Добавить комментарий