Bei Code 🍏
248 subscribers
113 photos
1 video
36 links
🚀 Добро пожаловать в iOS-разработку! 🎉
Для связи с автором: @iBeiCode
📱 Если ты начинающий разработчик или просто интересуешься IT, добро пожаловать на канал)

YouTube: https://youtube.com/@beicode

iOS
Swift
Xcode
Download Telegram
Bei Code 🍏
Test: 🧪
Что делает lazy переменная, которая инициализируется замыканием🤔
Пример кода к этому вопросу 👨‍💻

Код, чтобы просто взять и Ctrl+C Ctrl+V 👇


import Foundation

class TestLazy {
// lazy переменная, вычисляется замыканием
lazy var value: String = {
print(" Замыкание выполнено!")
return "Результат"
}()
}

print("👉 Создали объект TestLazy")
let test = TestLazy()

print("👉 Доступ к lazy переменной:")
print("value =", test.value) // здесь произойдёт выполнение замыкания

print("👉 Повторный доступ к value:")
print("value =", test.value) // замыкание больше не вызывается, берётся сохранённое значение
2
Bei Code 🍏
Test: 🧪
Когда удобно использовать замыкания вместо функций🤔
Пример кода к этому вопросу 👨‍💻

Код, чтобы просто взять и Ctrl+C Ctrl+V 👇


import Foundation

// У нас есть массив чисел
let numbers = [1, 2, 3, 4, 5]

// Используем замыкание, чтобы удвоить каждое число
let doubled = numbers.map { (number: Int) -> Int in
return number * 2
}
print("Удвоенные числа: \(doubled)")

// Ещё короче — Swift позволяет опускать типы и использовать $0
let tripled = numbers.map { $0 * 3 }
print("Утроенные числа: \(tripled)")

// Другой пример: фильтрация
let evenNumbers = numbers.filter { $0 % 2 == 0 }
print("Чётные числа: \(evenNumbers)")

// Сортировка с замыканием
let sortedDescending = numbers.sorted { $0 > $1 }
print("Сортировка по убыванию: \(sortedDescending)")
👍2👏1
🎉 Поздравляю!
Мы прошли тесты по замыканиям и двигаемся дальше — к новой теме enum. 👨‍💻 Всего будет +- 20 вопросов.
4
Bei Code 🍏
Test: 🧪 В каких случаях удобно использовать enum🤔
Пример кода к этому вопросу 👨‍💻

Код, чтобы просто взять и Ctrl+C Ctrl+V 👇


import Foundation

// Определяем перечисление (enum) для времён года
enum Season {
case spring
case summer
case autumn
case winter

// Дополнительный метод, который возвращает описание сезона
func description() -> String {
switch self {
case .spring:
return "Весна 🌱"
case .summer:
return "Лето ☀️"
case .autumn:
return "Осень 🍂"
case .winter:
return "Зима ❄️"
}
}
}

// Использование enum
let currentSeason: Season = .summer

print("Сейчас: \(currentSeason.description())")
3
Test: 🧪
Какое ключевое слово используется для объявления перечисления в Swift🤔
Anonymous Quiz
3%
A) typealias
3%
C) class
94%
B) enum
0%
D) struct
21💯1
2👍1
Bei Code 🍏
Test: 🧪 Может ли enum в Swift иметь методы внутри себя🤔
Пример кода к этому вопросу 👨‍💻

Код, чтобы просто взять и Ctrl+C Ctrl+V 👇


import Foundation

enum Direction {
case north, south, east, west

// Обычный метод
func description() -> String {
switch self {
case .north: return "⬆️ North"
case .south: return "⬇️ South"
case .east: return "➡️ East"
case .west: return "⬅️ West"
}
}

// Статический метод
static func allDirections() -> [Direction] {
return [.north, .south, .east, .west]
}

// Вычисляемое свойство
var isVertical: Bool {
return self == .north || self == .south
}
}

// Использование
let dir = Direction.east
print(dir.description()) // East
print(dir.isVertical) // false
print(Direction.allDirections()) // [north, south, east, west]
2👍1
Test: 🧪 Что будет, если enum имеет rawValue типа Int и не задать явно значения первому case🤔
Anonymous Quiz
12%
A) Ошибка компиляции
69%
B) Первый case = 0
15%
C) Автоматически nil
4%
D) Первый case = 1
4👍1💯1
Bei Code 🍏
Test: 🧪 Что будет, если enum имеет rawValue типа Int и не задать явно значения первому case🤔
Пример кода к этому вопросу 👨‍💻

Код, чтобы просто взять и Ctrl+C Ctrl+V 👇


import Foundation

enum TestEnum: Int {
case first // автоматически = 0
case second // автоматически = 1
case third // автоматически = 2
}

print("first =", TestEnum.first.rawValue) // 0
print("second =", TestEnum.second.rawValue) // 1
print("third =", TestEnum.third.rawValue) // 2
👍31
4💯1
Bei Code 🍏
Test: 🧪 Можно ли задать строковый rawValue для case в enum🤔
Пример кода к этому вопросу 👨‍💻

Код, чтобы просто взять и Ctrl+C Ctrl+V 👇


// Тест: 🧪 Можно ли задать строковый rawValue для case в enum🤔

enum SomeEnum: String {
case one = "Первый"
case two = "Второй"
}

// Проверим
print(SomeEnum.one.rawValue) // "Первый"
print(SomeEnum.two.rawValue) // "Второй"

// Попробуем восстановить enum по rawValue
if let value = SomeEnum(rawValue: "Второй") {
print("Нашли case:", value) // Нашли case: two
}
3💯1
Bei Code 🍏
Test: 🧪 Можно ли использовать associated values в enum🤔
Пример кода к этому вопросу 👨‍💻

Код, чтобы просто взять и Ctrl+C Ctrl+V 👇


enum Message {
case text(String) // хранит строку
case photo(url: String) // хранит ссылку
case video(length: Int) // хранит длительность видео
}

let msg1 = Message.text("Привет 👋")
let msg2 = Message.photo(url: "https://some.com/photo.jpg")
let msg3 = Message.video(length: 120)

// Распаковка через switch
func handleMessage(_ message: Message) {
switch message {
case .text(let text):
print("Текстовое сообщение: \(text)")
case .photo(let url):
print("Фото по ссылке: \(url)")
case .video(let length):
print("Видео, длительность: \(length) секунд")
}
}

handleMessage(msg1)
handleMessage(msg2)
handleMessage(msg3)
👍31
Test: 🧪 Что вернёт метод allCases у enum, который реализует CaseIterable🤔
Anonymous Quiz
20%
A) Количество case
0%
B) Только первый case
68%
C) Массив всех case
12%
D) Массив всех rawValue
4💯1
Bei Code 🍏
Test: 🧪 Что вернёт метод allCases у enum, который реализует CaseIterable🤔
Пример кода к этому вопросу 👨‍💻

Код, чтобы просто взять и Ctrl+C Ctrl+V 👇



import Foundation

// Enum с поддержкой CaseIterable
enum Direction: CaseIterable {
case north
case south
case east
case west
}

// Проверим результат работы allCases
print("Количество элементов: \(Direction.allCases.count)")
print("Список всех case: \(Direction.allCases)")

// Перебор всех вариантов
for direction in Direction.allCases {
print("Направление: \(direction)")
}
2👍1💯1
Test: 🧪 Может ли enum в Swift быть рекурсивным (ссылаться на себя через associated value)🤔
Anonymous Quiz
8%
A) Нет, Swift этого не позволяет
75%
B) Да, но с ключевым словом indirect
4%
C) Только в классах
13%
D) Да, но только с optional
👍32
Bei Code 🍏
Test: 🧪 Может ли enum в Swift быть рекурсивным (ссылаться на себя через associated value)🤔
Пример кода к этому вопросу 👨‍💻

Код, чтобы просто взять и Ctrl+C Ctrl+V 👇


import Foundation

// Рекурсивное перечисление с использованием `indirect`
enum LinkedList {
case empty
indirect case node(Int, next: LinkedList)
}

// Пример использования
let list = LinkedList.node(1, next: .node(2, next: .node(3, next: .empty)))

// Рекурсивная функция для печати значений
func printList(_ list: LinkedList) {
switch list {
case .empty:
print("nil")
case .node(let value, let next):
print(value, terminator: " -> ")
printList(next)
}
}

printList(list)
// Вывод: 1 -> 2 -> 3 -> nil
3👍3