Kotlin. Программирование для профессионалов. 2 изд

Kotlin. Программирование для профессионалов. 2 изд

Kotlin. Программирование для профессионалов. 2 изд
Автор: Бэйли Эндрю, Гринхол Дэвид, Скин Джош
Дата выхода: 2022
Издательство: Питер
Количество страниц: 993
Размер файла: 4.4 MB
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы

Благодарности....5

Представляем Kotlin....8

Почему Kotlin?....8

Для кого написана эта книга....9

Как пользоваться этой книгой....10

Шрифтовые обозначения....12

Заглядывая вперед....13

От издательства....13

Часть I. Первые шаги....15

1. Ваше первое приложение на Kotlin....16

Установка IntelliJ IDEA....16

Ваш первый проект на Kotlin....17

Ваш первый файл на Kotlin....26

Запуск вашего файла на языке Kotlin....29

Kotlin REPL....31

Для любознательных: зачем использовать IntelliJ....34

Для любознательных: программирование для JVM....35

Задание: арифметические вычисления в REPL....36

2. Переменные, константы и типы....38

Типы....38

Объявление переменной....39

Встроенные типы языка Kotlin....44

Переменные, доступные только для чтения....46

Автоматическое определение типов....51

Константы времени компиляции....54

Изучаем байт-код Kotlin....57

Для любознательных: простые типы Java в Kotlin....61

Задание: hasSteed....63

Задание: «Рог единорога»....64

Задание: волшебное зеркало....65

Часть II. Базовый синтаксис....67

3. Условные конструкции....68

Операторы if/else....68

Добавление условий....75

Вложенные операторы if/else....79

Более элегантные условные выражения....82

Интервалы....98

Условное выражение when....101

Выражения when c объявлением переменных....106

Задание: эксперименты с интервалами....109

4. Функции....111

Выделение кода в функции....111

Анатомия функции....116

Вызов функции....125

Пишем свои функции....128

Аргументы по умолчанию....132

Функции с единственным выражением....135

Функции с возвращаемым типом Unit....140

Именованные аргументы функций....142

Для любознательных: тип Nothing....146

Для любознательных: функции уровня файла в Java....149

Для любознательных: перегрузка функций....151

Для любознательных: имена функций в обратных кавычках....154

5. Числа....157

Числовые типы....157

Целые числа....160

Дробные числа....162

Форматирование значений типа Double....166

Преобразования числовых типов....170

Для любознательных: числа без знака....172

Для любознательных: манипуляции с битами....177

6. Строки....180

Интерполяция строк....180

Необработанные строки....187

Чтение ввода с консоли....190

Преобразование строк в числа....192

Регулярные выражения....197

Операции со строками....200

Сравнение строк....203

Для любознательных: Юникод....206

7. Null-безопасность и исключения....208

Допустимость null....208

Явный тип null в Kotlin....213

Время компиляции и время выполнения....218

Null-безопасность....219

Первый вариант: проверка null в операторе if....221

Второй вариант: оператор безопасного вызова....224

Третий вариант: оператор проверки....234

Исключения....237

Для любознательных: пользовательские исключения....251

Для любознательных: проверяемые и непроверяемые исключения....254

Часть III. Функциональное программирование и коллекции....256

8. Лямбда-выражения и тип функции....258

Представляем NyetHack....258

Анонимные функции....260

Лямбда-выражения....262

Неявный возврат....267

Поддержка автоматического определения типов....273

Более эффективные лямбда-выражения....275

Определение функции, которая получает функцию....281

Встраиваемые функции....286

Лямбда-выражения и стандартная библиотека Kotlin....289

Для любознательных: ссылки на функции....294

Для любознательных: захват лямбда-выражений....296

Задание: новые титулы и настроения....298

9. Списки и множества....301

Списки....305

Итерация....321

Чтение файла в список....329

Деструктуризация....332

Множества....337

Цикл while....345

Преобразование коллекций....348

Для любознательных: типы массивов....350

Для любознательных: «только для чтения» vs «неизменяемый»....352

Для любознательных: выражение break....354

Для любознательных: метки return....356

Задание: форматированный вывод меню таверны....359

Задание: улучшенное форматирование меню таверны....359

10. Ассоциативные массивы....361

Создание ассоциативного массива....361

Доступ к значениям в ассоциативном массиве....365

Добавление записей в ассоциативный массив....368

Изменение значений в ассоциативном массиве....372

Преобразования между списками и ассоциативными массивами....376

Перебор элементов ассоциативного массива....382

Задание: составные заказы....388

11. Основы функционального программирования....390

Преобразование данных....391

Фильтрация данных....408

Комбинирование данных....412

Почему именно функциональное программирование?....416

Последовательности....419

Для любознательных: профилирование....423

Для любознательных: агрегирование данных....424

Для любознательных: ключевое слово vararg....428

Для любознательных: Arrow.kt....430

Задание: перестановка ключей и значений в ассоциативном массиве....432

Задание: поиск самого популярного пункта меню....433

12. Функции области видимости....434

apply....434

let....436

run....440

with....441

also....442

takeIf....443

Часть IV. Объектно-ориентированное программирование....450

13. Классы....451

Объявление класса....451

Создание экземпляров....452

Функции класса....453

Видимость и инкапсуляция....455

Свойства класса....458

Get-методы и set-методы свойств....462

Видимость свойств....468

Вычисляемые свойства....470

Использование пакетов....475

Для любознательных: более пристальный взгляд на свойства var и val....478

Для любознательных: защита от изменяемости....484

Для любознательных: ограничение видимости рамками пакета....487

14. Инициализация....489

Конструкторы....490

Главный конструктор....491

Объявление свойств в главном конструкторе....495

Дополнительные конструкторы....496

Аргументы по умолчанию....500

Именованные аргументы....503

Блок инициализации....505

Порядок инициализации....508

Задержка инициализации....510

Для любознательных: подводные камни инициализации....525

Для любознательных: делегаты свойств....529

Задание: загадка Экскалибура....530

15. Наследование....533

Объявление класса Room....533

Создание подкласса....537

Проверка типов....548

Иерархия типов в языке Kotlin....552

Приведение типа....553

Умное приведение типа....556

Рефакторинг кода таверны....558

Для любознательных: Any....576

Для любознательных: оператор безопасного приведения типа....578

16. Объекты, классы данных и перечисления....580

Ключевое слово object....580

Классы данных....601

Перегрузка операторов....613

Исследуем мир NyetHack....617

Для любознательных: объявление структурного сравнения....624

Для любознательных: алгебраические типы данных....627

Для любознательных: классы-значения....632

Задание: другие команды....634

Задание: реализация карты мира....634

Задание: колокольный звон....635

17. Интерфейсы и абстрактные классы....636

Определение интерфейса....636

Реализация интерфейса....638

Реализация по умолчанию....644

Абстрактные классы....645

Сражение в NyetHack....652

Задание: дополнительные монстры....660

Часть V. Kotlin для опытных программистов....662

18. Обобщения....663

Определение обобщенных типов....663

Обобщенные функции....667

Ограничения обобщений....670

in и out....675

Добавление наград в NyetHack....682

Для любознательных: ключевое слово reified....696

19. Расширения....699

Определение функции-расширения....699

Объявление расширения для суперкласса....704

Обобщенные функции-расширения....705

Свойства-расширения....712

Расширения для типов, допускающих null....716

Расширения: как это устроено....718

Видимость расширений....721

Расширения в стандартной библиотеке Kotlin....722

Для любознательных: литералы функций с получателями....724

Задание: расширение рамок....727

20. Сопрограммы....729

Блокирующие вызовы....731

Включение сопрограмм....735

Строители сопрограмм....737

Области видимости сопрограмм....739

Структурированный параллелизм....741

Использование клиента HTTP....746

async и await....757

Для любознательных: состояние гонки....762

Для любознательных: Kotlin на стороне сервера....767

Задание: никаких отмен....769

21. Потоки данных....770

Создание потоков данных....771

MutableStateFlow....787

Завершение потоков данных....796

Преобразования потоков данных....801

Обработка ошибок в потоках данных....805

Для любознательных: SharedFlow....810

22. Каналы....817

Распределение работы с использованием каналов....818

Отправка данных в канал....820

Получение данных из канала....821

Закрытие канала....829

Объединение заданий....831

Для любознательных: другие особенности поведения каналов....839

Часть VI. Совместимость и мультиплатформенные приложения....844

23. Совместимость с Java....845

Взаимодействие с классом Java....846

Совместимость и null....849

Соответствие типов....854

Get-методы, set-методы и совместимость....858

За пределами класса....861

Исключения и совместимость....878

24. Знакомство с Kotlin Multiplatform....888

Что такое Kotlin Multiplatform?....889

Планирование мультиплатформенного проекта....891

Первый мультиплатформенный проект....893

Определение целевой платформы Kotlin/JVM....895

Определение общего кода....898

expect и actual....901

25. Kotlin/Native....912

Написание нативного кода на Kotlin....917

Для любознательных: Kotlin Multiplatform Mobile....928

Для любознательных: другие нативные платформы....930

26. Kotlin/JS....934

Объявление поддержки Kotlin/JS....934

Взаимодействие с DOM....942

Для любознательных: фреймворки клиентской части....964

Задание: комиссионные при обмене валюты....965

Послесловие....967

Что дальше?....967

Глоссарий....969

Рекомендуем прочитать....984

В 2011 году компания JetBrains анонсировала альтернативу языкам Java и Scala —язык программирования Kotlin, код которого тоже выполняется под управлением виртуальной машины Java (Java Virtual Machine). Шесть лет спустя Google объявил об официальной поддержке Kotlin как языка разработки для операционной системы Android.

И Kotlin быстро превратился из просто «перспективного» в язык поддержки приложений для лидирующей мобильной операционной системы. Сегодня крупные компании вроде Google, Uber, Netflix, Capital One, Amazon и других официально приняли на вооружение Kotlin, чему способствовали его компактность, современные возможности и полная совместимость с Java.


Похожее:

Список отзывов:

Нет отзывов к книге.