Дата: Суббота, 14 Марта 2026, 10:20 | Сообщение # 1
Генерал-полковник
Группа: Модераторы
Сообщений: 19860
Статус: Отсутствует
Эта книга проведет вас по основам Kotlin шаг за шагом – с забавными иллюстрациями, понятными примерами и четкими объяснениями. Вы усвоите основные понятия по порядку и без лишней сложности, построив прочную базу знаний. Программируйте весело и эффективно! Книга станет идеальным помощником начинающим изучать программирование или желающим восполнить пробелы в знаниях.
Содерание
Оглавление От издательства............................................................................................. 13 Предисловие.................................................................................................. 14 Признательности.......................................................................................... 15 Глава 1. Переменные, выражения и типы.................................................. 17 Введение в переменные....................................................................................19 Переприсваивание значений переменным..........................................................21 Переменные, которым нельзя переприсваивать новые значения......................22 Именование переменных.......................................................................................23 Выражения и инструкции.................................................................................24 Типы: разновидности значений.......................................................................26 Целые и длинные числа..........................................................................................27 Булевы величины....................................................................................................28 Строковые литералы...............................................................................................28 Другие типы.......................................................................................................29 Типы и переприсваивание.....................................................................................29 Краткий итог......................................................................................................29 Глава 2. Функции........................................................................................... 31 Введение в функции..........................................................................................33 Устранение дублирования с помощью функций.............................................34 Основы функций...............................................................................................35 Создание функции..................................................................................................35 Вызов функции........................................................................................................37 Аргументы и параметры: в чем разница?.............................................................39 Функции с более чем одним параметром........................................................39 Именованные аргументы.................................................................................41 Дефолтные аргументы......................................................................................42 Случаи, когда дефолтный аргумент стоит на первом месте................................43 Тела в форме выражений и в форме блоков....................................................45 Функции без результата....................................................................................47 Функция main()..................................................................................................48 Печать на экране...............................................................................................49 Краткий итог......................................................................................................51 Глава 3. Условные конструкции: when и if.................................................. 53 Златовласка и три ветви....................................................................................55 Введение в конструкцию when языка Kotlin....................................................57 Побеждает первое истинное условие ....................................................................59 Точные совпадения.................................................................................................61 Должны учтитываться все условия .......................................................................62 Выражения if......................................................................................................63 Выражения when и if как инструкции...................................................................65 Краткий итог......................................................................................................66 Глава 4. Классы, объекты и пакеты............................................................. 67 Соединение переменных и функций в одном месте......................................69 Определение класса..........................................................................................70 Пустой класс............................................................................................................70 Первая диаграмма...................................................................................................71 Объекты..............................................................................................................72 Конструирование объектов...............................................................................73 Параметры конструктора.......................................................................................73 Классы в сопоставлении с объектами....................................................................73 Получение значения свойства...............................................................................75 Свойства с доступом только для чтения................................................................75 Приватные свойства...............................................................................................76 Добавление функции-члена...................................................................................77 Добавление других функций..................................................................................79 Анатомия класса.....................................................................................................81 Абсолютно все является объектом...................................................................81 Числа типа Double как объекты..............................................................................81 Строковые литералы как объекты.........................................................................82 Булевы величины как объекты...............................................................................82 Объекты-одиночки............................................................................................83 Группировка в пакеты.......................................................................................85 Квалифицирование элементов исходного кода....................................................87 Импорт элементов исходного кода........................................................................88 Именованный импорт............................................................................................89 Импорт с подстановочным знаком........................................................................89 Импорт из стандартной библиотеки.....................................................................90 Краткий итог......................................................................................................92 Глава 5. Перечислительные классы............................................................. 93 Создание перечислительного класса...............................................................96 Использование перечислительного класса......................................................97 Использование перечислительных классов с выражениями when................98 Добавление свойств и функций в перечислительные классы........................99 Встроенные свойства......................................................................................101 Свойство ordinal..........................................................................................101 Свойство name............................................................................................102 Краткий итог....................................................................................................103 Глава 6. Отсутствие значений и защита от null....................................... 105 Введение в null.................................................................................................107 Присутствующие и отсутствующие значения.....................................................109 Типы, которые можно и нельзя использовать с null ..........................................111 Время компиляции и время исполнения......................................................112 Взаимосвязь типов, которые можно и нельзя использовать с null..............113 Ожидание типа, который можно использовать с null........................................114 Ожидание типа, который нельзя использовать с null........................................116 Использование условных конструкций для проверки на null......................118 Использование оператора Элвиса для предоставления дефолтного значения.....................................................................................................121 Использование оператора принудительной конвертации в не-null для обеспечения присутствия значения .................................................123 Ошибки во время компиляции и во время исполнения....................................125 Когда использовать оператор принудительной конвертации в не-null?....126 Использование оператора защищенного вызова для обращения к функциям и свойствам..............................................................................126 Краткий итог....................................................................................................130 Глава 7. Лямбды и ссылки на функции..................................................... 131 Ножницы и машинки Берта............................................................................133 Введение в функциональные типы ...............................................................136 Две функции с одинаковыми типами..................................................................139 Передача функций функциям..............................................................................140 Возвращение функций из функций.....................................................................141 Введение в лямбды..........................................................................................142 Традиционные функции и лямбды......................................................................144 Неявный параметр it.......................................................................................145 Лямбды и функции более высокого порядка.................................................145 Передача лямбд в качестве аргументов..............................................................145 Возвращение лямбд в качестве результатов функций.......................................147 Лямбды с несколькими инструкциями..........................................................148 Замыкания.......................................................................................................149 Краткий итог....................................................................................................151 Глава 8. Коллекции: списки и множества................................................. 153 Введение в списки...........................................................................................155 Коллекции и типы.................................................................................................157 Добавление и удаление элемента..................................................................158 Список и мутируемый список..............................................................................161 Получение элемента из списка............................................................................162 Циклы и итерации...........................................................................................164 Операции на коллекциях................................................................................167 Отображение коллекций: конвертация элементов............................................168 Сортировка коллекций....................................................................................170 Фильтрация коллекций: включение и исключение элементов.........................171 Цепочки операций на коллекциях.......................................................................173 Другие операции на коллекциях..........................................................................175 Введение в множества.....................................................................................175 Краткий итог....................................................................................................177 Глава 9. Словари.......................................................................................... 179 Правильный инструмент для работы.............................................................181 Ассоциирование данных между собой...........................................................181 Основы словарей.............................................................................................183 Создание словаря с помощью mapOf()................................................................185 Поиск значения.....................................................................................................186 Изменение словаря...............................................................................................187 Операции на словарях..........................................................................................189 Фильтрация............................................................................................................190 Установка дефолтных значений...........................................................................192 Создание словаря из списка...........................................................................193 Ассоциирование свойств из списка объектов.....................................................193 Краткий итог....................................................................................................200 Глава 10. Получатели и расширения......................................................... 201 Независимые функции и объектные функции..............................................203 Как ни крути, они не такие уж и разные........................................................206 Введение в получатели....................................................................................206 Введение в функции-расширения..................................................................209 Получатели с типом, который можно использовать с null.................................211 Свойства-расширения..........................................................................................213 Краткий итог....................................................................................................214 Глава 11. Диапазоны доступности и диапазонные функции................. 215 Введение в диапазоны доступности..............................................................217 Диапазоны и видимость.................................................................................219 Диапазоны инструкций........................................................................................220 Диапазоны объявлений........................................................................................221 Вложенные диапазоны и видимость...................................................................222 Введение в диапазонные функции................................................................228 with().......................................................................................................................228 run() .......................................................................................................................229 let() .......................................................................................................................231 also() .......................................................................................................................233 apply().....................................................................................................................234 Выбор наиболее подходящей диапазонной функции..................................235 Какую диапазонную функцию следует использовать?.................................236 Затенение имен...............................................................................................236 Затенение и неявные получатели........................................................................237 Затенение, неявные получатели и this................................................................239 Диапазонные функции и проверки на null...................................................240 Краткий итог....................................................................................................241 Глава 12. Введение в интерфейсы............................................................. 243 Сью открывает ферму.....................................................................................245 Введение в интерфейсы..................................................................................250 Подтипы и надтипы........................................................................................252 Подтипы и подстановка........................................................................................253 Приведение типа.............................................................................................255 Умное приведение типа........................................................................................256 Явное приведение типа........................................................................................257 Несколько интерфейсов..................................................................................258 Наследование интерфейсов............................................................................260 Дефолтные реализации...................................................................................263 Краткий итог....................................................................................................265 Глава 13. Введение в делегирование действий между классами............ 267 Ужин Роджера вне дома..................................................................................269 Делегирование действий в ресторанах и в исходном коде..........................269 Ручное делегирование действий....................................................................270 Делегирование дополнительных вызовов функций..........................................273 Простое делегирование по Kotlin’овски........................................................275 Несколько делегатов........................................................................................276 Переопределение делегированного вызова..................................................278 Урегулирование конфликтов..........................................................................279 Делегирование действий для общих и конкретных типов...........................282 Краткий итог....................................................................................................285 Глава 14. Абстрактные и открытые классы.............................................. 287 Моделирование автомобиля...........................................................................289 Введение в абстрактные классы.....................................................................292 Расширение абстрактных классов..................................................................292 Наследование...................................................................................................294 Интерфейс и реализация......................................................................................295 Переопределение членов................................................................................297 Защищенная видимость.......................................................................................298 Абстрактные функции и свойства.......................................................................299 Открытые функции и свойства............................................................................300 Введение в открытые классы..........................................................................301 Модификаторы видимости: извлекатели и установители...........................302 Комбинирование интерфейсов и абстрактных/открытых классов.............304 Сравнение интерфейсов, абстрактных и открытых классов ............................. 304 Подклассы и подстановка...............................................................................305 Иерархии классов............................................................................................306 Тип Any.............................................................................................................307 Краткий итог....................................................................................................308 Глава 15. Классы данных и деструктуризация......................................... 309 Переопределение функции equals()...............................................................311 Равенство ссылок..................................................................................................311 Равенство значений..............................................................................................312 Переопределение функции hashCode()..........................................................316 Переопределение функции toString()............................................................318 Введение в классы данных..............................................................................320 Копирование классов данных.........................................................................322 Деструктуризация............................................................................................324 Деструктуризация и стандартная библиотека....................................................327 Деструктуризация классов, не предназначенных для хранения только данных..............................................................................................329 Ограничения классов данных.........................................................................331 Классы данных и наследование...........................................................................332 Параметры конструктора.....................................................................................332 Краткий итог....................................................................................................334 Глава 16. Запечатанные типы.................................................................... 335 Добавление еще одного типа..........................................................................339 Введение в запечатанные типы......................................................................342 Запечатанные классы......................................................................................344 Зачем вообще нужен модификатор sealed?...................................................345 Ограничения подтипа запечатанного типа...................................................347 Запечатанные типы в сопоставлении с перечислительными классами.....349 Краткий итог....................................................................................................352 Глава 17. Обработка исключений во время исполнения программы.................................................................................................. 353 Проблемы во время исполнения....................................................................355 Стек вызовов.........................................................................................................356 Стеки вызовов, исключения и сообщения об ошибках................................360 Перехват исключений.....................................................................................363 Исключения являются объектами........................................................................367 Запуск исключений.........................................................................................369 Типы исключений............................................................................................370 Обработка нескольких типов исключений по-разному...............................374 Вычисление результата выражения try..........................................................375 Конструкция Try-Catch-Finally.......................................................................377 Функциональный подход к обработке исключений.....................................379 Краткий итог....................................................................................................380 Глава 18. Обобщенные типы...................................................................... 381 Кружки и напитки...........................................................................................383 Объявленные типы, фактические типы и совместимость присваиваний ...........................................................................................386 Введение в обобщенные типы........................................................................388 Объявление обобщенного типа............................................................................388 Использование обобщенного типа......................................................................390 Установление ограничений на параметры типа...........................................392 Обобщенные типы на практике.....................................................................395 Использование параметров типа.........................................................................395 Обобщенные типы с несколькими параметрами типа......................................395 Обобщенные интерфейсы и надклассы..............................................................395 Обобщенные функции..........................................................................................396 Обобщенные типы в стандартной библиотеке.............................................397 List и Set.................................................................................................................397 Pair .......................................................................................................................398 Издержки обобщенных типов........................................................................399 Совместимость присваиваний у обобщенных типов.........................................399 Стирание типов.....................................................................................................400 Краткий итог....................................................................................................402 Глава 19. Вариантность в обобщенных типах.......................................... 403 Ковариантность...............................................................................................405 Контрвариантность.........................................................................................410 Что делает подтип подтипом?........................................................................415 Модификаторы вариантности........................................................................417 Модификатор out..................................................................................................419 Модификатор in....................................................................................................420 Вариантность на нескольких параметрах типа.............................................421 Проекции типов...............................................................................................422 Исходящие проекции............................................................................................425 Входящие проекции..............................................................................................426 Звездные проекции...............................................................................................427 Вариантность в стандартной библиотеке......................................................429 Краткий итог....................................................................................................430 Глава 20. Самое необходимое о сопрограммах........................................ 431 По одному делу за раз.....................................................................................433 Однопоточный блокирующий исходный код.....................................................434 Сопрограммы и конкурентность....................................................................436 Введение в сопрограммы.....................................................................................437 По два дела за раз............................................................................................446 Моделирование строительной площадки ..........................................................447 Два робота, по два дела за раз........................................................................452 Многопоточная конкурентность..........................................................................454 withContext(): передача работы другому диспетчеру.........................................458 Отмены.............................................................................................................462 Отмена всей работы..............................................................................................462 Отмена части работы............................................................................................467 Когда невозможно оправиться от проблемы.................................................469 Исключения в сопрограммах...............................................................................469 Краткий итог....................................................................................................471 Дополнение А. Как исполнять листинги исходного кода....................... 473 Загрузка проекта с образцами исходного кода.............................................473 Создание проекта Kotlin..................................................................................474 Добавление файлов Kotlin Script (.kts).................................................................476 Добавление файлов Kotlin (.kt).............................................................................476 Другие способы написания и исполнения исходного кода Kotlin...............477 Обследование онлайновой игровой площадки..................................................477 Продвинутые опции..............................................................................................477 Дополнение Б. Добавление зависимостей................................................ 478 Добавление зависимостей в проект Gradle....................................................479 Добавление зависимостей в проект Maven...................................................480 Краткий итог....................................................................................................481 Предметный указатель............................................................................... 482