дз ко второй лекции по всем темам
Дедлайн 23.10.2025 в 20:59
сдавать дз можно любым удобным способом (ссылки на гит, текст, либо файл если сделают уже к этому времени функцию)
Часть 1: Функции, Функциональный Тип и Функции Высшего Порядка
Задача: Работа со списком чисел
1. Объявите функциональный тип NumberTransformer, который представляет функцию, принимающую Int и возвращающую Int.
2. Создайте функцию высшего порядка processNumbers, которая принимает:
- Список чисел
- Функцию-трансформер типа NumberTransformer
- Возвращает новый список с преобразованными числами
3. Создайте несколько лямбд:
- square - возводит число в квадрат
- increment - увеличивает число на 1
- double - удваивает число
val numbers = listOf(1, 2, 3, 4, 5)
val squared = processNumbers(numbers, square)
Часть 2: Null Safety и Scope-функции
Задача 1: Безопасная обработка пользовательского ввода
1. Напишите функцию safeStringProcessor, которая принимает nullable строку
2. Используйте let для обработки только non-null значений
3. Внутри let используйте also для логирования исходной строки
4. Используйте run для преобразования строки (на ваш вкус)
fun safeStringProcessor(input: String?): String {
}
Задача 2: Обработка данных пользователя
val userAge: String? = "25"
val userName: String? = " Анна "
val userCity: String? = null
Задание: обработайте каждое значение с помощью подходящих scope-функций
и соберите информацию в строку формата "Имя: Анна, Возраст: 25, Город: Не указан"
используйте форматирование строки через $ для вывода
Часть 3: Функции-расширения
Задача 1: Расширения для String
1. Добавьте функции-расширения для String:
- isValidEmail() - проверяет, содержит ли строка @ и точку после нее
- getInitials() - возвращает инициалы (первые буквы каждого слова)
- removeSpaces() - удаляет все пробелы из строки
fun String.isValidEmail(): Boolean {
}
Задача 2: Расширения для List
**Добавьте функции-расширения для списка интов
- average() - вычисляет среднее значение
- getEvenNumbers() - возвращает только четные числа
- sumIf() - принимает условие (лямбду) и суммирует только те числа, которые ему удовлетворяют
Часть 4: Обработка исключений
Задача:
1. Напишите функцию safeParseInt которая принимает строку и возвращает число
2. Используйте try-catch для обработки NumberFormatException
3. При ошибке возвращайте значение по умолчанию (например, -1)
kotlin
fun safeParseInt(str: String): Int {
}
Часть 5: Практическая интеграция (map, also, let, run)
Задача: Обработка списка сотрудников
val employees = listOf(
"Иван Иванов - 28 лет - 50000",
"Мария Петрова - 32 года - 60000",
"Алексей Сидоров - null - 55000",
" Елена Козлова - 29 лет - 62000 "
)
Задание: Напишите функцию processEmployeeData, которая:
1. Использует map для преобразования каждого элемента
2. Для каждой строки использует let/run для обработки
3. Использует also для логирования этапов
4. Возвращает список в формате: "И. Иванов (28 лет) - 50000р"
fun processEmployee(employees: List<String>): List<String> {
return employees.map { employee ->
employee.also {
println("Обрабатываем: $it")
}.let { emp ->
}
}
}