Урок 11. Кортежи

14 Января 2023

Задача 11.1 📚

Создайте множество целых чисел от 1 до 5. Так же создайте свойство, которое будет хранить рандомное значение от 1 до 10. Добавьте в множество это рандомное значение, если оно уже будет в множестве, то выведите на консоль сообщение: “item <…> already exists”, иначе “Item <…> added to collection”. 

Используйте только пройденные концепции.

				
					var numbers: Set = [1, 2, 3, 4, 5]
let number = Int.random(in: 1...10)
let (inserted, newElement) = numbers.insert(number)

if !inserted {
    print("item \(newElement) already exists")
} else {
    print("Item \(newElement) added to collection")
}
				
			

Множество является переменной, потому как мы вносим в него изменения.

Рандомное число, является константой, мы его менять не планируем. 

далее мы группируем два свойства в кортеж, и достаем два значения, которые используем в условной конструкции. Если свойство inserted возвращает false, то есть элемент не был добавлен, частичка отрицания меняет его на противоположное, и срабатывает первый блок кода, иначе второй. 

Это задание можно было решить иначе:

				
					var numbers: Set = [1, 2, 3, 4, 5]
let number = Int.random(in: 1...10)
let newElement = numbers.insert(number)

if !newElement.inserted {
    print("item \(newElement.memberAfterInsert) already exists")
} else {
    print("Item \(newElement.memberAfterInsert) added to collection")
}
				
			

На этот раз мы создаем одно свойство, которое имеет тип кортежа, и обращаемся к его значениям. Но наш код стал немного объемней, поэтому я бы выбрала первый вариант. 

Можно еще немного оптимизировать наш код. Так как у нас достаточно простая конструкция if, то мы можем использовать тернарный оператор:

				
					var numbers: Set = [1, 2, 3, 4, 5]
let number = Int.random(in: 1...10)
let (inserted, newElement) = numbers.insert(number)

!inserted
? print("item \(newElement) already exists")
: print("Item \(newElement) added to collection")
				
			

Так код выглядит аккуратней. 

Задача 11.2 📚

Создайте новый кортеж на основе следующего:

let numbers = (1, 2.4, 3)

Только что бы элементы размещались в обратном порядке 3, 2.4, 1

Используйте только пройденные концепции. Циклы использовать не нужно.

				
					let numbers = (1, 2.4, 3)
let newNumbers = (numbers.2, numbers.1, numbers.0)
				
			

Обратите внимание что свойства должны быть константами, в контексте мы их не меняем. 

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

Поддержите наш проект, и помогите изменить подход к обучению!

Развивайся вместе с нами

Поддержите наш проект, и помогите изменить подход к обучению!

Address List

Social Networks

Поддержите наш проект, и помогите изменить подход к обучению!