Skip to content

14v/example-kotlin2-types

 
 

Repository files navigation

Kotlin-2 - Типы

Код к занятию Kotlin-2

  • Статическая типизация
  • Типы и подтипы
  • Nullability
  • Обобщения
  • Иерархия типов

Домашнее задание

В папке network находится прототип класса результата работы сетевого сервиса NetworkResponse, который может быть:

  • Success - для удачного результата
  • Failure - для ошибки

Задание 1.

Исправьте определение классов так, чтобы все присваивания под определениями компилировались без ошибок. Подсказки:

  • Используйте declaration type variance
  • Мы только ВОЗВРАЩАЕМ результат или ошибку (ковариантность по обоим параметрам)
  • Вспоминаем, что тип Nothing - это подтип любого другого типа

Задание 2.

Почините (правильно расставьте variance параметров) класс NetworkLogger таким образом, чтобы один универсальный экземпляр логгера можно было использовать для логирования любых ошибок:

  • processThrowables принимает ErrorLogger<Throwable>
  • processApiErrors принимает ErrorLogger<ApiException>

Приступайте ко второму заданию только после окончания работы над первым!

Задание 3 (со звездочкой)

Сделайте так, чтобы NetworkLogger имел возможность выдать список накопленных ошибок. Настройте типы таким образом, чтобы при сохранении условий заданий 1 и 2, в классе появилась функция:

fun dump(): List<Pair<LocalDateTime, E>>

About

Kotlin type system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 100.0%