10/305 sprint 1

Всем привет, сегодня я и прошла первый спринт своего обучения, новый материал откроется только в четверг;( Но! Оставшиеся 2 дня до второго спринта я хочу закрепить весь пройденный материал и порешать задачи 💃💃💃

Сегодня я изучила перечисления (enum) в языке программирования Swift! 📚✨

🎀Что такое перечисления?

Перечисления позволяют создавать набор связанных значений. Например, я определила перечисление для видов летающих существ:

enum FlyingSpecie { case bird case insect }

Здесь FlyingSpecie — это название перечисления, а case обозначает возможные значения, которые могут принимать экземпляры этого перечисления.

🎀Оператор Switch

Чтобы реагировать на разные кейсы, я использовала оператор switch:

func print(specie: FlyingSpecie) { switch specie { case .bird: print("Это птица") case .insect: print("Это насекомое") } }

Важно помнить, что оператор switch должен обрабатывать все возможные значения перечисления. Если это не так, Swift выдаст ошибку!

🎀Оператор Default

Если нужно обработать все остальные случаи одинаково, я могу использовать default:

func print(specie: FlyingSpecie) { switch specie { case .bird: print("Это птица") default: print("Неизвестный вид") } }

🎀Функции внутри перечислений

Я также узнала, что функции можно объявлять внутри перечислений. Это позволяет обращаться к текущему значению с помощью self:

enum FlyingSpecie { case bird case insect func printSelf() { switch self { case .bird: print("Это птица") case .insect: print("Это насекомое") } } }

🎀Перечисления с типом значений

Перечисления могут иметь ассоциированные значения. Например, если я хочу связать строку с каждым кейсом:

enum FlyingSpecie: String { case bird = "птица" case insect = "насекомое" }

Теперь я могу получить связанное значение с помощью rawValue:

let myBird = .bird print(myBird.rawValue) // Выведет "птица"

🎀Ассоциированные значения

Наконец, я изучила ассоциированные значения, которые позволяют связывать дополнительные данные с кейсами:

enum FlyingSpecie { case bird(Int, String) case insect(Int, String) }

Теперь при создании экземпляра перечисления можно передавать дополнительные параметры:

let newBird = FlyingSpecie.bird(21, "Колибри")

Для обработки этих значений я использую разыменовывание в операторе switch:

for specie in catalog { switch specie { case .bird(let width, let name): print("Это птица: (name). Размах крыльев: (width)") case .insect(let size, let name): print("Это насекомое: (name). Размер: (size)") } }