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)") } }