Урок 11. Кортежи
Главная / Уроки / Страница блока Основы / Урок 11. Кортежи / Задача 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
Поддержите наш проект, и помогите изменить подход к обучению!
Social Networks