Bei Code 🍏
Test: 🧪
Можно ли сохранить замыкание в переменной❓🤔
Можно ли сохранить замыкание в переменной❓🤔
Пример кода к этому вопросу 👨💻
Код, чтобы просто взять и Ctrl+C Ctrl+V 👇
Код, чтобы просто взять и Ctrl+C Ctrl+V 👇
import Foundation
// Переменная объявлена вне функции (пока без значения)
var operation: ((Int, Int) -> Int)?
// Функция, внутри которой мы присваиваем переменной замыкание
@MainActor func setupClosure() {
// Присваиваем замыкание в переменную
operation = { a, b in
return a + b
}
print("Замыкание присвоено переменной 'operation'")
}
// Сначала вызываем настройку
setupClosure()
// Теперь можно использовать переменную с замыканием
if let op = operation {
let result = op(4, 6)
print("4 + 6 = \(result)") // 4 + 6 = 10
}
❤3
Test: 🧪
Как вызвать замыкание, сохранённое в переменной closure❓🤔
Как вызвать замыкание, сохранённое в переменной closure❓🤔
Anonymous Quiz
9%
A) call(closure)
91%
B) closure()
0%
C) invoke closure
0%
D) execute(closure)
❤3👍1
Bei Code 🍏
Test: 🧪
Как вызвать замыкание, сохранённое в переменной closure❓🤔
Как вызвать замыкание, сохранённое в переменной closure❓🤔
Пример кода к этому вопросу 👨💻
Код, чтобы просто взять и Ctrl+C Ctrl+V 👇
Код, чтобы просто взять и Ctrl+C Ctrl+V 👇
import Foundation
// Переменная closure — замыкание без параметров и возвращаемого значения
var closure: () -> Void = {
print("Замыкание вызвано!")
}
// Вызов замыкания
closure() // правильный вызов
❤3👍1
Test: 🧪
Что делает in в синтаксисе замыкания❓🤔
Что делает in в синтаксисе замыкания❓🤔
Anonymous Quiz
8%
A) Отделяет closure от вызова
8%
B) Указывает область памяти
85%
C) Разделяет список параметров и тело замыкания
0%
D) Ничего не делает
👍2❤1🔥1
Bei Code 🍏
Test: 🧪
Что делает in в синтаксисе замыкания❓🤔
Что делает in в синтаксисе замыкания❓🤔
Пример кода к этому вопросу 👨💻
Код, чтобы просто взять и Ctrl+C Ctrl+V 👇
Код, чтобы просто взять и Ctrl+C Ctrl+V 👇
import Foundation
// Функция, принимающая замыкание
func testClosure(action: (Int, Int) -> Int) {
let result = action(5, 3)
print("Результат: \(result)")
}
// Вызов функции с замыканием
testClosure { (a: Int, b: Int) -> Int in
// ключевое слово "in" отделяет список параметров и возвращаемый тип от тела замыкания
return a + b
}
// Можно еще короче (Swift умеет выводить типы)
testClosure { a, b in
a * b
}
❤4👍1🔥1
Test: 🧪
Что делает lazy переменная, которая инициализируется замыканием❓🤔
Что делает lazy переменная, которая инициализируется замыканием❓🤔
Anonymous Quiz
13%
A) Вызывает замыкание при запуске
83%
B) Выполняет замыкание только при первом доступе
0%
C) Удаляет замыкание
4%
D) Не позволяет замыканию возвращать значения
❤3👍1
Bei Code 🍏
Test: 🧪
Что делает lazy переменная, которая инициализируется замыканием❓🤔
Что делает lazy переменная, которая инициализируется замыканием❓🤔
Пример кода к этому вопросу 👨💻
Код, чтобы просто взять и Ctrl+C Ctrl+V 👇
Код, чтобы просто взять и 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
Test: 🧪
Когда удобно использовать замыкания вместо функций❓🤔
Когда удобно использовать замыкания вместо функций❓🤔
Anonymous Quiz
4%
A) Когда нужна глобальная функция
4%
B) Когда нужно наследование
92%
C) Когда нужно передать кусок кода как аргумент
0%
D) Когда требуется массив строк
❤3👍1
Bei Code 🍏
Test: 🧪
Когда удобно использовать замыкания вместо функций❓🤔
Когда удобно использовать замыкания вместо функций❓🤔
Пример кода к этому вопросу 👨💻
Код, чтобы просто взять и Ctrl+C Ctrl+V 👇
Код, чтобы просто взять и 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 вопросов.
Мы прошли тесты по замыканиям и двигаемся дальше — к новой теме enum. 👨💻 Всего будет +- 20 вопросов.
❤4
Test (enum №1): 🧪 Что такое enum (перечисление) в Swift❓🤔
Anonymous Quiz
0%
A) Класс с наследованием
4%
B) Протокол для описания интерфейса
16%
C) Коллекция, похожая на массив
80%
D) Тип данных, представляющий ограниченный набор значений
❤2👍1
Test: 🧪 В каких случаях удобно использовать enum❓🤔
Anonymous Quiz
88%
A) Когда значения ограничены фиксированным набором (например, времена года)
4%
B) Когда нужно хранить список пользователей
0%
C) Когда требуется работа с многопоточностью
8%
D) Когда нужно хранить большой объём данных
❤3💯1
Bei Code 🍏
Test: 🧪 В каких случаях удобно использовать enum❓🤔
Пример кода к этому вопросу 👨💻
Код, чтобы просто взять и Ctrl+C Ctrl+V 👇
Код, чтобы просто взять и 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❓🤔
Какое ключевое слово используется для объявления перечисления в Swift❓🤔
Anonymous Quiz
3%
A) typealias
3%
C) class
94%
B) enum
0%
D) struct
❤2⚡1💯1
Test: 🧪 Может ли enum в Swift иметь методы внутри себя❓🤔
Anonymous Quiz
4%
A) Только инициализаторы
11%
B) Нет, это запрещено
21%
C) Только статические методы
64%
D) Да, любые методы
❤2👍1
Bei Code 🍏
Test: 🧪 Может ли enum в Swift иметь методы внутри себя❓🤔
Пример кода к этому вопросу 👨💻
Код, чтобы просто взять и Ctrl+C Ctrl+V 👇
Код, чтобы просто взять и 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 👇
Код, чтобы просто взять и 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
👍3❤1
Test: 🧪 Можно ли задать строковый rawValue для case в enum❓🤔
Anonymous Quiz
9%
A) Да, только для private case
9%
B) Нет, это невозможно
82%
C) Да, если enum имеет raw-тип String.
0%
D) Да, но только с @objc
❤4💯1
Bei Code 🍏
Test: 🧪 Можно ли задать строковый rawValue для case в enum❓🤔
Пример кода к этому вопросу 👨💻
Код, чтобы просто взять и Ctrl+C Ctrl+V 👇
Код, чтобы просто взять и 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
Test: 🧪 Можно ли использовать associated values в enum❓🤔
Anonymous Quiz
73%
A) Да, для хранения дополнительных данных в case
5%
B) Только в private enum
23%
C) Нет, только rawValue
0%
D) Да, но только числа
❤3👍1