Главная » 2020»Июнь»5 » Хорстман К. - Scala для нетерпеливых, 2-е издание (2017)
13:44
Хорстман К. - Scala для нетерпеливых, 2-е издание (2017)
Второе издание было обновлено до поддержки версии Scala 2.12 и демонстрирует самые современные приемы использования языка.
В него было добавлено описание последних нововведений в Scala, включая интерполяцию строк, динамический вызов, неявные классы и объекты Future. Язык Scala обладает весьма обширными возможностями, но вы сможете эффективно пользоваться им, даже не зная их все. В этой книге приводится достаточно информации, чтобы вы могли начать работу с простыми и компактными фрагментами кода. Написанная для опытных программистов на Java, C++ и C#, которые желают освоить функциональное программирование или язык Scala, книга в сжатой форме знакомит с основными идеями и приемами программирования, что позволяет быстро осваивать их и применять на практике. Это введение в язык особенно хорошо подходит для нетерпеливых пользователей, желающих изучать основы Scala и тут же воплощать новые знания в код. Автор не стремился охватить все возможности языка и не заставит вас продираться через длинные, надуманные примеры кода. Все примеры были подобраны с особой тщательностью и помогут вам быстро пройти от новичка до эксперта.
Предисловие к первому изданию................................... 15 Вступление........................................................................... 17 Об авторе.............................................................................. 19 Глава 1. Основы................................................................... 20 1.1..Интерпретатор.Scala......................................................... 20 1.2..Объявление.значений.и.переменных................................. 23 1.3..Часто.используемые.типы.................................................. 25 1.4..Арифметика.и.перегрузка.операторов............................... 26 1.5..Вызов.функций.и.методов.................................................. 28 1.6..Метод.apply....................................................................... 29 1.7..Scaladoc............................................................................ 31 Упражнения.............................................................................. 35 Глава 2. Управляющие структуры и функции............... 37 2.1..Условные.выражения......................................................... 38 2.2..Завершение.инструкций.................................................... 40 2.3..Блочные.выражения.и.присваивание................................. 41 2.4..Ввод.и.вывод..................................................................... 42 2.5..Циклы................................................................................ 44 2.6..Расширенные.циклы.for..................................................... 45 2.7..Функции............................................................................ 47 2.8..Аргументы.по.умолчанию.и.именованные.аргументы...L1..... 48 2.9..Переменное.количество.аргументов...L1.............................. 49 2.10..Процедуры....................................................................... 507 Содержание 2.11..Ленивые.значения...L1....................................................... 51 2.12..Исключения..................................................................... 52 Упражнения.............................................................................. 55 Глава 3. Работа с массивами........................................... 57 3.1..Массивы.фиксированной.длины........................................ 58 3.2..Массивы.переменной.длины:.буферы................................ 58 3.3..Обход.массивов.и.буферов................................................ 59 3.4..Преобразование.массивов................................................ 60 3.5..Типичные.алгоритмы......................................................... 62 3.6..Расшифровываем.Scaladoc............................................... 64 3.7..Многомерные.массивы...................................................... 66 3.8..Взаимодействие.с.Java...................................................... 66 Упражнения.............................................................................. 68 Глава 4. Ассоциативные массивы и кортежи............... 70 4.1..Конструирование.ассоциативных.массивов....................... 71 4.2..Доступ.к.значениям.в.ассоциативных.массивах................. 72 4.3..Изменение.значений.в.ассоциативных.массивах............... 72 4.4..Обход.элементов.ассоциативных.массивов....................... 74 4.5..Сортированные.ассоциативные.массивы.......................... 74 4.6..Взаимодействие.с.Java...................................................... 75 4.7..Кортежи............................................................................. 76 4.8..Функция.zip........................................................................ 77 Упражнения.............................................................................. 77 Глава 5. Ассоциативные массивы и кортежи............... 79 5.1..Простые.классы.и.методы.без.параметров........................ 80 5.2..Свойства.с.методами.доступа............................................ 81 5.3..Свойства.только.с.методами.чтения.................................. 83 5.4..Приватные.поля.объектов.................................................. 85 5.5..Свойства.компонентов...L1.................................................. 86 5.6..Дополнительные.конструкторы.......................................... 87 5.7..Главный.конструктор.......................................................... 88 5.8..Вложенные.классы...L1........................................................ 91 Упражнения.............................................................................. 938 Содержание Глава 6. Объекты................................................................. 96 6.1..Объекты-одиночки............................................................. 96 6.2..Объекты-компаньоны........................................................ 97 6.3..Объекты,.расширяющие.классы.или.трейты...................... 98 6.4..Метод.apply....................................................................... 99 6.5..Объект,.представляющий.приложение..............................100 6.6..Перечисления...................................................................101 Упражнения.............................................................................103 Глава 7. Пакеты и импортирование...............................104 7.1..Пакеты..............................................................................105 7.2..Правила.видимости..........................................................106 7.3..Объявления.цепочек.пакетов............................................108 7.4..Объявления.в.начале.файла..............................................108 7.5..Объекты.пакетов...............................................................109 7.6..Видимость.внутри.пакетов................................................110 7.7..Импортирование..............................................................111 7.8..Импортирование.возможно.в.любом.месте......................112 7.9..Переименование.и.сокрытие.членов.................................112 7.10..Неявный.импорт.............................................................113 Упражнения.............................................................................113 Глава 8. Наследование.....................................................115 8.1..Наследование.классов......................................................115 8.2..Переопределение.методов...............................................116 8.3..Проверка.и.приведение.типов..........................................117 8.4..Защищенные.поля.и.методы.............................................118 8.5..Создание.суперклассов....................................................118 8.6..Переопределение.полей...................................................120 8.7..Анонимные.подклассы......................................................121 8.8..Абстрактные.классы.........................................................122 8.9..Абстрактные.поля.............................................................122 8.10..Порядок.создания.и.опережающие.определения...L3........123 8.11..Иерархия.наследования.в.Scala......................................125 8.12..Равенство.объектов...L1....................................................128 8.13..Классы-значения...L2........................................................129 Упражнения.............................................................................1319 Содержание Глава 9. Файлы и регулярные выражения....................133 9.1..Чтение.строк.....................................................................134 9.2..Чтение.символов..............................................................134 9.3..Чтение.лексем.и.чисел......................................................135 9.4..Чтение.из.URL.и.других.источников...................................136 9.5..Чтение.двоичных.файлов..................................................136 9.6..Запись.в.текстовые.файлы................................................136 9.7..Обход.каталогов...............................................................137 9.8..Сериализация...................................................................137 9.9..Управление.процессами...А2..............................................138 9.10..Регулярные.выражения...................................................141 9.11..Группы.в.регулярных.выражениях...................................142 Упражнения.............................................................................143 Глава 10. Трейты................................................................145 10.1..Почему.не.поддерживается.множественное.. наследование?........................................................................146 10.2..Трейты.как.интерфейсы..................................................148 10.3..Трейты.с.конкретными.реализациями.............................149 10.4..Объекты.с.трейтами........................................................150 10.5..Многоуровневые.трейты.................................................150 10.6..Переопределение.абстрактных.методов.в.трейтах..........152 10.7..Трейты.с.богатыми.интерфейсами..................................153 10.8..Конкретные.поля.в.трейтах.............................................154 10.9..Абстрактные.поля.в.трейтах............................................155 10.10..Порядок.конструирования.трейтов...............................156 10.11..Инициализация.полей.трейтов......................................158 10.12..Трейты,.наследующие.классы.......................................160 10.13..Собственные.типы...L2....................................................161 10.14..За.кулисами..................................................................162 Упражнения.............................................................................164 Глава 11. Операторы.........................................................167 11.1..Идентификаторы............................................................168 11.2..Инфиксные.операторы....................................................169 11.3..Унарные.операторы........................................................17010 Содержание 11.4..Операторы.присваивания...............................................171 11.5..Приоритет......................................................................171 11.6..Ассоциативность............................................................172 11.7..Методы.apply.и.update....................................................173 11.8..Экстракторы...L2...............................................................174 11.9..Экстракторы.с.одним.аргументом.. или.без.аргументов...L2.............................................................177 11.10..Метод.unapplySeq...L2.....................................................177 11.11..Динамический.вызов...L2................................................178 Упражнения.............................................................................182 Глава 12. Функции высшего порядка............................185 12.1..Функции.как.значения.....................................................186 12.2..Анонимные.функции.......................................................187 12.3..Функции.с.функциональными.параметрами....................188 12.4..Вывод.типов...................................................................189 12.5..Полезные.функции.высшего.порядка..............................190 12.6..Замыкания......................................................................192 12.7..Преобразование.функций.в.SAM.....................................193 12.8..Карринг..........................................................................194 12.9..Абстракция.управляющих.конструкций...........................196 12.10..Выражение.return..........................................................198 Упражнения.............................................................................199 Глава 13. Коллекции.........................................................201 13.1..Основные.трейты.коллекций...........................................202 13.2..Изменяемые.и.неизменяемые.коллекции.......................204 13.3..Последовательности.......................................................205 13.4..Списки............................................................................207 13.5..Множества......................................................................208 13.7..Операторы.добавления.и.удаления.элементов...............210 13.7..Общие.методы................................................................212 13.8..Функции.map.и.flatMap....................................................214 13.9..Функции.reduce,.fold.и.scan...А3........................................216 13.10..Функция.zip...................................................................220 13.11..Итераторы....................................................................22211 Содержание 13.12..Потоки...А3......................................................................223 13.13..Ленивые.представления...А3...........................................225 13.14..Взаимодействие.с.коллекциями.Java............................226 13.15..Параллельные.коллекции..............................................227 Упражнения.............................................................................229 Глава 14. Сопоставление с образцом и case-классы.....................................................................232 14.1..Лучше,.чем.switch............................................................233 14.2..Ограничители.................................................................234 14.3..Переменные.в.образцах..................................................235 14.4..Сопоставление.c.типами.................................................236 14.5..Сопоставление.с.массивами,.списками.и.кортежами......237 14.6..Экстракторы...................................................................238 14.7..Образцы.в.объявлениях.переменных..............................239 14.8..Образцы.в.выражениях.for..............................................240 14.9..Case-классы...................................................................241 14.10..Метод.copy.и.именованные.параметры.........................242 14.11..Инфиксная.нотация.в.предложениях.case.....................243 14.12..Сопоставление.с.вложенными.структурами..................244 14.13..Так.ли.необходимы.case-классы?..................................245 14.14..Запечатанные.классы...................................................247 14.15..Имитация.перечислений...............................................247 14.16..Тип.Option.....................................................................248 14.17..Частично.определенные.функции...L2.............................249 Упражнения.............................................................................251 Глава 15. Аннотации..........................................................254 15.1..Что.такое.аннотации?......................................................255 15.2..Что.можно.аннотировать?...............................................256 15.3..Аргументы.аннотаций.....................................................257 15.4..Реализация.аннотаций....................................................258 15.5..Аннотации.для.элементов.Java........................................259 15.6..Аннотации.для.оптимизации...........................................262 15.7..Аннотации.ошибок.и.предупреждений............................267 Упражнения.............................................................................26912 Содержание Глава 16. Обработка XML.................................................271 16.1..Литералы.XML.................................................................272 16.2..Узлы.XML........................................................................273 16.3..Атрибуты.элементов.......................................................274 16.4..Встроенные.выражения..................................................276 16.5..Выражения.в.атрибутах...................................................277 16.6..Необычные.типы.узлов....................................................278 16.7..XPath-подобные.выражения............................................279 16.8..Сопоставление.с.образцом.............................................281 16.9..Модификация.элементов.и.атрибутов.............................282 16.10..Трансформация.XML.....................................................283 16.11..Загрузка.и.сохранение..................................................284 16.12..Пространства.имен.......................................................287 Упражнения.............................................................................288 Глава 17. Объекты Future.................................................290 17.1..Запуск.асинхронных.заданий.в.объектах.Future...............291 17.2..Ожидание.результатов....................................................294 17.3..Класс.Try.........................................................................295 17.4..Обратные.вызовы...........................................................296 17.5..Комбинирование.заданий.в.объектах.Future....................297 17.6..Другие.преобразования.объектов.Future.........................300 17.7..Методы.объекта.Future....................................................302 17.8..Объекты.Promise.............................................................304 17.9..Контексты.выполнения...................................................306 Упражнения.............................................................................307 Глава 18. Параметризованные типы.............................310 18.1..Обобщенные.классы.......................................................311 18.2..Обобщенные.функции.....................................................312 18.3..Границы.изменения.типов...............................................312 18.4..Границы.представления..................................................314 18.5..Границы.контекста..........................................................314 18.6..Границы.контекста.ClassTag............................................315 18.7..Множественные.границы................................................316 17.8..Ограничение.типов...L3.....................................................31613 Содержание 18.9..Вариантность..................................................................318 18.10..Ко-.и.контравариантные.позиции..................................320 18.11..Объекты.не.могут.быть.обобщенными...........................322 18.12..Подстановочный.символ...............................................323 Упражнения.............................................................................324 Глава 19. Дополнительные типы....................................326 19.1..Типы-одиночки...............................................................327 19.2..Проекции.типов..............................................................329 19.3..Цепочки..........................................................................330 19.4..Псевдонимы.типов..........................................................331 19.5..Структурные.типы...........................................................332 19.6..Составные.типы..............................................................332 19.7..Инфиксные.типы.............................................................334 19.8..Экзистенциальные.типы.................................................334 19.9..Система.типов.языка.Scala.............................................336 19.10..Собственные.типы........................................................337 19.11..Внедрение.зависимостей.............................................338 19.12..Абстрактные.типы...L3.....................................................341 19.13..Родовой.полиморфизм...L3.............................................343 19.14..Типы.высшего.порядка...L3..............................................346 Упражнения.............................................................................350 Глава 20. Парсинг..............................................................353 20.1..Грамматики....................................................................354 20.2..Комбинирование.операций.парсера...............................356 20.3..Преобразование.результатов.парсинга...........................358 20.4..Отбрасывание.лексем.....................................................360 20.5..Создание.деревьев.синтаксического.анализа.................361 20.6..Уход.от.левой.рекурсии...................................................361 20.7..Дополнительные.комбинаторы.......................................363 20.8..Уход.от.возвратов...........................................................366 20.9..Packrat-парсеры.............................................................367 20.10..Что.такое.парсеры?.......................................................368 20.11..Парсеры.на.основе.регулярных.выражений...................369 20.12..Парсеры.на.основе.лексем............................................37014 Содержание 20.13..Обработка.ошибок........................................................372 Упражнения.............................................................................374 Глава 21. Неявные параметры и преобразования.....376 21.1..Неявные.преобразования...............................................377 21.2..Использование.неявных.преобразований.. для.расширения..существующих.библиотек............................378 21.3..Импорт.неявных.преобразований...................................379 21.4..Правила.неявных.преобразований..................................381 21.5..Неявные.параметры........................................................382 21.6..Неявные.преобразования.с.неявными.параметрами.......383 21.7..Границы.контекста..........................................................385 21.8..Классы.типов..................................................................386 21.9..Неявный.параметр.подтверждения.................................389 21.10..Аннотация.@implicitNotFound........................................390 21.11..Тайна.CanBuildFrom.......................................................391 Упражнения.............................................................................393 Предметный указатель.....................................................395
Название: Scala для нетерпеливых, 2-е издание Автор: Хорстман К. Год: 2017 Жанр: программирование Издательство: ДМК Пресс Язык: Русский
Формат: pdf Качество: eBook Страниц: 415 Размер: 3,5 MB
Скачать Хорстман К. - Scala для нетерпеливых, 2-е издание (2017)