Академический Документы
Профессиональный Документы
Культура Документы
Kotlin
Wouldn‛t it be dreamy if there
were a book on Kotlin that was
easier to understand than the
space shuttle flight manual?
I guess it‛s just a fantasy…
Dawn Griffiths
David Griffiths
Head First
Kotlin
Как бы было хорошо
найти книгу о языке Kotlin,
которая будет веселее визита к зубному
врачу и понятнее налоговой декларации...
Наверное, об этом можно
только мечтать...
Дон Гриффитс
Дэвид Гриффитс
2020
Дон Гриффитс, Дэвид Гриффитс
Head First. Kotlin
Перевел с английского Е. Матвеев
ББК 32.973.2-018.1
УДК 004.43
Гриффитс Дон, Гриффитс Дэвид
Г85 Head First. Kotlin. — СПб.: Питер, 2020. — 464 с.: ил. — (Серия «Head First O’Reilly»).
ISBN 978-5-4461-1335-4
Вот и настало время изучить Kotlin. В этом вам поможет уникальная методика Head First, выходящая за рамки синтаксиса и ин-
струкций по решению конкретных задач. Хотите мыслить, как выдающиеся разработчики Kotlin? Эта книга даст вам все необходи-
мое — от азов языка до продвинутых методов. А еще вы сможете попрактиковаться в объектно-ориентированном и функциональном
программировании. Если вы действительно хотите понять, как устроен Kotlin, то эта книга для вас!
Почему эта книга не похожа на другие? Подход Head First основан на новейших исследованиях в области когнитивистики и теории
обучения. Визуальный формат позволяет вовлечь в обучение мозг читателя лучше, чем длинный текст, который вгоняет в сон. Зачем
тратить время на борьбу с новыми концепциями? Head First задействует разные каналы получения информации и разрабатывался с
учетом особенностей работы вашего мозга.
16+ (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.)
ISBN 978-1491996690 англ. Authorized Russian translation of the English edition of Head First Kotlin
(ISBN 9781491996690) © 2019 Dawn Griffiths and David Griffiths.
This translation is published and sold by permission of O’Reilly Media, Inc.,
which owns or controls all rights to publish and sell the same.
ISBN 978-5-4461-1335-4 © Перевод на русский язык ООО Издательство «Питер», 2020
© Издание на русском языке, оформление ООО Издательство «Питер», 2020
© Серия «Head First O’Reilly», 2020
Права на издание получены по соглашению с O’Reilly. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой
бы то ни было форме без письменного разрешения владельцев авторских прав.
Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Тем не менее, имея в виду
возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений
и не несет ответственности за возможные ошибки, связанные с использованием книги. Издательство не несет ответственности за доступность
материалов, ссылки на которые вы можете найти в этой книге. На момент подготовки книги к изданию все ссылки на интернет-ресурсы были дей-
ствующими.
Изготовлено в России. Изготовитель: ООО «Прогресс книга». Место нахождения и фактический адрес:
194044, Россия, г. Санкт-Петербург, Б. Сампсониевский пр., д. 29А, пом. 52. Тел.: +78127037373.
Дата изготовления: 09.2019. Наименование: книжная продукция. Срок годности: не ограничен.
Импортер в Беларусь: ООО «ПИТЕР М», 220020, РБ, г. Минск, ул. Тимирязева, д. 121/3, к. 214, тел./факс: 208 80 01.
Налоговая льгота — общероссийский классификатор продукции ОК 034-2014, 58.11.12.000 — Книги печатные
профессиональные, технические и научные.
Подписано в печать 19.09.19. Формат 84×108/16. Бумага писчая. Усл. п. л. 48,720. Тираж 1500. Заказ 0000.
Содержание (сводка)
Введение 21
1 Первые шаги. Не теряя времени 31
2 Базовые типы и переменные. Из жизни переменных 61
3 Функции. За пределами main 89
4 Классы и объекты. Высокий класс 121
5 Подклассы и суперклассы. Наследование 121
6 Абстрактные классы и интерфейсы. Серьезно о полиморфизме 185
7 Классы данных. Работа с данными 221
8 Null и исключения. В целости и сохранности 249
9 Коллекции. Порядок превыше всего 281
10 Обобщения. На каждый вход знай свой выход 319
11 Лямбда-выражения и функции высшего порядка.
Обработка кода как данных 325
12 Встроенные функции высшего порядка.
Расширенные возможности 393
Приложение I. Сопрограммы. Параллельный запуск 427
Приложение II. Тестирование. Код под контролем 439
Приложение III. Остатки. Топ-10 тем, которые мы не рассмотрели 445
Содержание (настоящее)
Введение
Ваш мозг и Kotlin. Вы сидите за книгой и пытаетесь что-нибудь
выучить, но ваш мозг считает, что вся эта писанина не нужна. Мозг
говорит: «Выгляни в окно! На свете есть более важные вещи, на-
пример сноуборд». Как заставить мозг изучить программирование
на Kotlin?
5
содержание
Первые шаги
1 Не теряя времени
Kotlin впечатляет.С выхода самой первой версии Kotlin впечатляет програм-
мистов своим удобным синтаксисом, компактностью, гибкостью и мощью.
В этой книге мы научим вас строить собственные приложения Kotlin, а для
начала покажем, как построить простейшее приложение и запустить его. Попутно
вы познакомитесь с базовыми элементами синтаксиса Kotlin: командами, циклами
и условными конструкциями. Приготовьтесь, путешествие начинается!
A
J IDE
e lli
Int
6
содержание
2 Из жизни переменных
От переменных зависит весь ваш код.В этой главе мы заглянем «под
капот» и покажем, как на самом деле работают переменные Kotlin. Вы по-
знакомитесь с базовыми типами, такими как Int, Float и Boolean, и узнаете, что
компилятор Kotlin способен вычислить тип переменной по присвоенному ей
значению. Вы научитесь пользоваться строковыми шаблонами для построения
сложных строк с минимумом кода, и узнаете, как создать массивы для хране-
ния нескольких значений. Напоследок мы расскажем, почему объекты играют
такую важную роль в программировании Kotlin.
7
содержание
Функции
3 За пределами main
А теперь пришло время поближе познакомиться с функци-
ями. До сих пор весь написанный нами код размещался в функции main
приложения. Но если вы хотите, чтобы код был лучше структурирован
и проще в сопровождении, необходимо знать, как разбить его на от-
дельные функции. В этой главе на примере игры вы научитесь писать
функции и взаимодействовать с ними из приложения. Вы узнаете, как пи-
сать компактные функции единичных выражений. Попутно вы научитесь
перебирать диапазоны и коллекции в мощных циклах for.
"Rock" "Paper"
String String
EF
R
"Scissors"
options
EF
EF
EF
R
String
val Array<String>
0 1 2
8
содержание
Классы и объекты
4 Высокий класс
Пришло время выйти за границы базовых типов Kotlin.Рано
или поздно базовых типов Kotlin вам станет недостаточно. И здесь на помощь
приходят классы. Классы представляют собой шаблоны для создания ваших
собственных типов объектов и определения их свойств и функций. В этой главе
вы научитесь проектировать и определять классы, а также использовать их
для создания новых типов объектов. Вы познакомитесь с конструкторами,
блоками инициализации, get- и set-методами и научитесь использовать их для
защиты свойств. В завершающей части вы узнаете о средствах защиты данных,
встроенных в весь код Kotlin. Это сэкономит ваше время, силы и множество
нажатий клавиш.
Один класс
Классы используются для определения типов объектов 122
Dog Как спроектировать собственный класс 123
weight: 70
R
name
breed: “Mixed” weight
myDog breed
Dog bark()
var Dog
9
содержание
Подклассы и суперклассы
5 Наследование
Вам когда-нибудь казалось, что если немного изменить
тип объекта, то он идеально подойдет для ваших целей?
то ж, это одно из преимуществ наследования. В этой главе вы научитесь
Ч
создавать подклассы и наследовать свойства и функции суперклассов.
Вы узнаете, как переопределять функции и свойства, чтобы классы
работали так, как нужно вам, и когда это стоит (или не стоит) делать. На-
конец, вы увидите, как наследование помогает избежать дублирования
кода, и узнаете, как сделать код более гибким при помощи полиморфизма.
10
содержание
6 Серьезно о полиморфизме
Иерархия наследования суперклассов — только первый шаг.
Чтобы в полной мере использовать возможности полиморфизма, следует
проектировать иерархии с абстрактными классами и интерфейсами. В этой
главе вы узнаете, как при помощи абстрактных классов управлять тем, какие
классы могут или не могут создаваться в вашей иерархии. Вы увидите, как
с их помощью заставить конкретные подклассы предоставлять собственные
реализации. В этой главе мы покажем, как при помощи интерфейсов органи-
зовать совместное использование поведения в независимых классах,
(interface)
Roamable
а заодно опишем нюансы операторов is, as и when.
11
содержание
Классы данных
7 Работа с данными
Никому не хочется тратить время и заново делать то, что уже
было сделано.В большинстве приложений используются классы, предназна-
ченные для хранения данных. Чтобы упростить работу, создатели Kotlin предложили
концепцию класса данных. В этой главе вы узнаете, как классы данных помогают
писать более элегантный и лаконичный код, о котором раньше можно было
только мечтать. Мы рассмотрим вспомогательные функции классов данных
и узнаем, как разложить объект данных на компоненты. Заодно расскажем,
как значения параметров по умолчанию делают код более гибким, а также
познакомим вас с Any — предком всех суперклассов.
фактическим
объектом.
12
содержание
Null и исключения
8 В целости и сохранности
Все мечтают о безопасности кода, и, к счастью, она была
заложена в основу языка Kotlin.В этой главе мы сначала покажем,
что при использовании null-совместимых типов Kotlin вы вряд ли когда-ли-
бо столкнетесь с исключениями NullPointerException за все время про-
граммирования на Kotlin. Вы научитесь использовать безопасные вызовы
и узнаете, как Элвис-оператор спасает от всевозможных бед. А когда мы
разберемся с null, то вы сможете выдавать и перехватывать исключения
как настоящий профессионал.
13
содержание
Коллекции
1
“Coffee” Создайте объект MutableList... 287
Список (List)
Значения можно удалять... 288
EF
R
EF
EF
14
содержание
Обобщения
15
содержание
16
содержание
12 Расширенные возможности
Kotlin содержит подборку встроенных функций высшего по-
рядка.В этой главе представлены некоторые полезные функции этой категории.
Вы познакомитесь с гибкими фильтрами и узнаете, как они используются для
сокращения размера коллекции. Научитесь преобразовывать коллекции
функцией map, перебирать их элементы в forEach, а также группировать
элементы коллекций функцией groupBy. Мы покажем, как использовать fold
для выполнения сложных вычислений всего в одной строке кода. К концу этой
главы вы научитесь писать мощный код, о котором и не мечтали.
ция fold 0
R
коллекции. 1
Примеры использования fold 416
Int Обновление проекта Groceries 417
EF
3
R
17
содержание
Сопрограммы
I Параллельный запуск
Некоторые задачи лучше выполнять в фоновом режиме. Если вы
загружаете данные с медленного внешнего сервера, то вряд ли захотите, чтобы
остальной код простаивал и дожидался завершения загрузки. В подобных ситуа-
циях на помощь приходят сопрограммы. Сопрограммы позволяют писать код,
предназначенный для асинхронного выполнения. А это означает сокращение
времени простоя, более удобное взаимодействие с пользователем и улучшенная
масштабируемость приложений. Продолжайте читать, и вы узнаете, как говорить
с Бобом, одновременно слушая Сьюзи.
II
Тестирование
Код под контролем
Хороший код должен работать, это все знают.Но при любых изме-
нениях кода появляется опасность внесения новых ошибок, из-за которых код не
будет работать так, как положено. Вот почему так важно провести тщательное
тестирование: вы узнаете о любых проблемах в коде до того, как он будет
развернут в среде реальной эксплуатации. В этом приложении рассматриваются
JUnit и KotlinTest — библиотеки модульного тестирования, которые дадут вам
дополнительные гарантии безопасности.
18
содержание
Остатки
19
Посвящается светлым умам разработчиков
Kotlin, которые создали такой замечательный
язык программирования.
Об авторах
Дэвид
с
Гриффит
Дон
Гриффитс
Дон Гриффитс уже более 20 лет работает Дэвид Гриффитс работал Agile-коучем, раз-
в IT-отрасли на должностях старшего разработ- работчиком и рабочим на автозаправке (хотя и
чика и старшего архитектора ПО. немного в другом порядке). Увлекся программи-
рованием в 12 лет, после просмотра документаль-
Она написала несколько книг из серии Head First,
ного фильма о работе Сеймура Пейперта. В 15 лет
включая Head First. Программирование для Android.
он написал реализацию языка программирова-
Кроме того, со своим мужем Дэвидом разработала
ния LOGO, созданного Пейпертом. Прежде чем
анимационный видеокурс The Agile Sketchpad — ме-
браться за книгу Head First Kotlin, Дэвид написал
тод представления ключевых концепций и при-
еще несколько книг из серии Head First, включая
емов, который бы обеспечивал максимальную
Head First. Программирование для Android, и создал
активность мозга и его непосредственное участие
видеокурс The Agile Sketchpad при участии Дон.
в процессе обучения.
Когда он не занят программированием, литера-
Когда Дон не пишет книги и не снимает видео, турной работой или преподаванием, проводит
она обычно совершенствует свое мастерство время в путешествиях со своей очаровательной
тайцзи, увлекается чтением, бегом, плетением женой и соавтором — Дон.
кружев и кулинарией. Но больше всего ей нра-
Наши микроблоги Twitter доступны по адресу
вится проводить время с ее замечательным мужем
https://twitter.com/HeadFirstKotlin.
Дэвидом.
20
Как работать с этой книгой
Введение
Не могу поверить,
что они включили
такое в книгу про
Kotlin.
дальше 4 21
как работать с этой книгой
[Примечание от от
дела продаж:
вообще-то эта книга
для всех,
у кого есть кредитк
а... и если что —
PayPal тоже подойдет
.]
22 введение
введение
дальше 4 23
как работать с этой книгой
т учиться.
Эта книга для тех, кто хоче За-
потом не забыть.
ач ал а ну жн о это «что-то» понять, а едован и-
ем? Сн йшим иссл
Как мы что-то узна в недо ст аточно. Согласно нове
больше фа кто ия, для усвоен ия
толкать в голову по психологии обучен
и когнит ив истики , нейробиологии и ра нице . Мы знаем, как
ям в област
ль ше е, че м прос той текст на ст
тся что-то бо
материала требуе
зг работать.
заставить ваш мо
st»
пы серии «Head Fir
Основные принци эффективность
значительно повышает
ом ин ается луч ше , чем обычный текст, и ста новится более
ка зап Кроме того, материал
Наглядность. Графи ным исс ледований).
и (до 89 % по дан ми ил и на соседней
восприятия информ
аци тся, а не под ни
ает ся на ри сун ка х, к которым он относи вы ша ется вдвое.
ещ хся к материалу, по
понятным. Текст разм ре ше ния задач, относящи
но сть усп еш но го
странице — и вероят орном стиле из-
али, что при разгов
ло же ни я. Не дав ни е исс ледования показ ом тес тировании
из гов
Разговорный стиль х лекций) улучшени
е результатов на ито
(вм ест о фо рм аль ны тес ь к себе слишком
ложения материала лекцию. Не относи
вай те ист ор ию , вм есто того чтобы читать ци я?
зы лом или лек
достигает 40 %. Расска ательная беседа за сто
но . Что пр ив леч ет ваше внимание: заним
серьез ничего не про-
ины, в вашей голове
ел я. По ка вы не нач нете напрягать извил , фо рмулировать
тат ачи
Ак тивное участие чи ан в ре зул ьта те; он должен решать зад
лжен быть заинтересов ерзные вопросы,
изойдет. Читатель до для это го нео бхо ди мы упражнения и кав
А
ь новыми знаниями.
выводы и овладеват по лушария мозга и раз
ные чувства.
зад ейс тво ван ы об а
ни и кот ор ых
в ре ше : «Я очень хочу изу-
чи тат ел я. Си туа ци я, знакомая каж дому
ранение) внимания ое, странное, притя-
Привлечение (и сох . Мо зг об ращ ает внимание на интересн
на первой странице» чным. Интересное
чить это, но засыпаю не обязано быть ску
е. Из уче ни е сло жн ой технической темы
но
гательное, неожидан
ает ся нам но го бы стрее.
узн й мере зависит от
инать в значительно
Из вес тно , что наш а способность запом зап оминаем, когда
ия м. небезразлично. Мы
Обращение к эмоц оминаем то, что нам
еж ива ни я. Мы зап как уди вление, любо-
эмоционального соп
ер
пр и чем : ре чь ид ет о таких эмоциях,
т, сантименты здесь
ни е считают сложной,
что-то чувствуем. Не ре ше ни и зад ачи , которую окружающи
ство «Да я кру т!» пр и нического отдела.
пытство, интерес и чув в тем е луч ше , чем всезнайка Боб из тех
ь
ете, что разбираетес
или когда вы понима
24 введение
введение
дальше 4 25
как работать с этой книгой
26 введение
введение
дальше 4 27
как работать с этой книгой
Примите к сведению
Это учебник, а не справочник. Мы намеренно убрали из книги все, что могло бы помешать изучению
материала, над которым вы работаете. И при первом чтении начинать следует с самого начала, потому
что книга предполагает наличие у читателя определенных знаний и опыта.
Сначала мы излагаем основные концепции Kotlin, но затем мы начинаем сходу применять Kotlin
на практике.
Основы программирования Kotlin рассматриваются в главе 1. К тому времени, когда вы перейдете к
главе 2, вы уже будете создавать программы, которые делают что-то полезное. В оставшейся части книги
ваши навыки Kotlin будут только расти, и из новичка Kotlin вы за минимальное время станете мастером.
Упражнения ОБЯЗАТЕЛЬНЫ.
Упражнения являются частью основного материала книги. Одни упражнения способствуют запоминанию
материала, другие помогают лучше понять его, третьи ориентированы на его практическое применение.
Не пропускайте упражнения.
28 введение
команда рецензентов
Научные редакторы
Кен
Инго
Научные редакторы
Инго Кротцки — квалифицированный специа- Кен Каусен — автор книг Modern Java Recipes
лист по обработке медицинской информации, (O’Reilly), Gradle Recipes for Android (O’Reilly)
работающий программистом баз данных/разра- и Making Java Groovy (Manning), а также видео
ботчиком программных продуктов для контракт- курсов O’Reilly по изучению Android, Groovy,
ных исследовательских организаций. Gradle, нетривиальных возможностей Java и
Spring. Регулярно выступает с докладами на
конференциях по всему миру, в том числе:
No Fluff, Just Stuff, JavaOne Rock Star в 2013
и 2016 годах. В своей компании Kousen I.T.,
Inc. проводил учебные курсы по разработке
программного обеспечения для тысяч участ-
ников.
дальше 4 29
Благодарности
Нашему редактору:
Сердечное спасибо нашему редактору Джеффу Блейлю
за его работу. Его доверие, поддержка и содействие были
чрезвычайно полезными. Вы не представляете, сколько
раз он указывал, что материал недостаточно понятен Джефф Блейл
или нуждается в переосмыслении, — это помогло нам
сделать книгу лучше.
Команде O’Reilly
Огромное спасибо Брайану Фостеру за его создействие на ранних ста-
диях; Сьюзен Конант, Рэйчел Румелиотис и Нэнси Дэвис, направляв-
ших нас на правильный путь; Рэнди Камер за дизайн обложки; команде
предварительного выпуска за подготовку ранних версий этой книги.
Также мы хотим поблагодарить Кристер Браун, Джасмин Квитин, Люси
Хаскинс и остальных участников команды производства, столь умело
руководивших процессом и выполнявших огромную, хотя и незаметную
на первый взгляд работу.
30 введение
1 Первые шаги
Не теряя времени
Давайте к нам — водичка про-
сто класс! Мы сразу возьмемся
за дело, напишем код и рас-
смотрим основные элементы
синтаксиса Kotlin. Вы в два счета
начнете программировать.
32 глава 1
первые шаги
Android
Наряду с другими языками (например, Java) в Kotlin ре-
ализована полноценная поддержка Android. Kotlin пол-
ностью поддерживается средой Android Studio, поэтому
вы сможете пользоваться многочисленными преимуще-
ствами Kotlin при разработке приложений на Android.
Платформенные приложения
Если потребуется написать код, который будет быстро
работать на менее мощных устройствах, код Kotlin мож-
но откомпилировать непосредственно в машинный код
конкретной платформы. В частности, это позволит вам Хотя мы будем строить
писать код, выполняемый в iOS или Linux. приложения для виртуальных
машин Java, для чтения этой
книги не обязательно знать
В этой книге мы сосредоточимся на создании приложений
Java. Предполагается, что
Kotlin для JVM, так как это позволит вам быстрее всего осво-
у читателя есть некоторый
ить язык. Позже вы сможете применить полученные знания
опыт практического програм-
на других платформах. Итак, за дело!
мирования и ничего более.
дальше 4 33
действия
Проект, который
будет создан в IDE.
34 глава 1
первые шаги
val name = "Misty" Объявить переменную с именем ‘name’ и присвоить ей значение “Misty”.
val height = 9
println("Hello")
println("My cat is called $name")
println("My cat is $height inches tall")
val a = 6
val b = 7
val c = a + b + 10
val str = c.toString()
while (y < 8) {
myCat.play()
y = y + 1
}
дальше 4 35
решение упражнения
val name = "Misty" Объявить переменную с именем ‘name’ и присвоить ей значение “Misty”.
val height = 9 Объявить переменную с именем ‘height’ и присвоить ей значение 9.
println("My cat is called $name") Вывести строку “My cat is called Misty”.
println("My cat is $height inches tall") Вывести строку “My cat is 9 inches tall”.
val myCat = Cat(name, height) Объявить переменную с именем ‘myCat’ и создать объект Cat.
val y = height - 3 Объявить переменную с именем ‘y’ и присвоить ей значение 6.
if (y < 5) myCat.miaow(4) Если y меньше 5, метод miaow объекта Cat должен быть
вызван 4 раза.
36 глава 1
Вы находитесь здесь. первые шаги
Построение приложения
Установка IntelliJ IDEA (Community Edition) Добавление функции
Обновление функции
Если вы хотите написать и выполнить код Kotlin, проще всего воспользо Использование REPL
ваться IntelliJ IDEA (Community Edition) — бесплатной интегрированной
средой от JetBrains (людей, придумавших язык Kotlin), которая содержит
все необходимое для разработки приложений на Kotlin, включая:
Редактор кода
Kotlin REPL
Редактор кода поддерживает автоза
Простой доступ к оболочке
вершение, упрощающее написание
Kotlin REPL, в которой можно
кода Kotlin, форматирование и цве
опробовать тот или иной фраг
товое выделение кода, упрощающее
мент вне основного кода.
его чтение. Также редактор выдает
подсказки для улучшения кода.
A
Инструменты построения J IDE Контроль версий
e lli IntelliJ IDEA взаимодействует
Вы можете откомпилировать Int со всеми основными системами
и запустить свой код при помощи контроля версий — такими, как
удобных комбинаций клавиш. Git, SVN, CVS и другими.
...и много других возможностей,
упрощающих работу.
Экран при-
ветствия
IntelliJ IDEA.
дальше 4 37
создание проекта
Построение приложения
Добавление функции
Построение простейшего приложения Обновление функции
Итак, среда разработки готова к использованию, и можно Использование REPL
переходить к созданию первого приложения. Мы создадим
очень простое приложение, которое будет выводить в IDE
текст «Pow!»
Каждый раз, когда в IntelliJ IDEA создается новое приложе-
ние, для него необходимо создать новый проект. Убедитесь
в том, что IDE открыта, и повторяйте за нами.
Здесь перечисле-
ны все созданные Выберите команду соз-
вами проекты. дания нового проекта.
Это наш первый
проект, так
что эта область
пока пуста.
38 глава 1
первые шаги
Построение приложения
Мы создаем проект
Kotlin, поэтому
выбираем вариант
Kotlin.
дальше 4 39
конфигурация проекта
Построение приложения
Добавление функции
Построение простейшего приложения (продолжение) Обновление функции
Использование REPL
stApp».
Введите имя проекта «MyFir
40 глава 1
Этот шаг пройден, вычеркиваем его.
первые шаги
Построение приложения
Добавление функции
Вы только что создали свой первый проект Kotlin Обновление функции
Когда все необходимые действия для создания нового проекта будут Использование REPL
выполнены, IntelliJ IDEA создаст проект и отобразит его в интегри
рованной среде. Вот как выглядит проект, который был сгенерирован
интегрированной средой:
дальше 4 41
добавление файла
Построение приложения
Включение файла Kotlin в проект Добавление функции
Обновление функции
Прежде чем написать первый код на Kotlin, необходимо создать Использование REPL
файл, в котором этот код будет храниться.
Чтобы добавить новый файл Kotlin в проект, выделите папку src
на панели структуры IntelliJ IDEA, откройте меню File и выберите
команду New → Kotlin File/Class. Вам будет предложено ввести имя
и тип создаваемого файла Kotlin. Введите имя приложения «App»
и выберите в списке Kind вариант File:
42 глава 1
первые шаги
Построение приложения
Анатомия функции main Добавление функции
Обновление функции
Наш код Kotlin должен выводить сообщение «Pow!» в окне вывода IDE.
Использование REPL
Для этого мы добавим функцию в файл App.kt.
В каждое созданное вами приложение Kotlin обязательно должна быть
включена функция с именем main, которая запускает приложение. Ког
да вы запускаете свой код, JVM находит эту функцию и выполняет ее.
Функция main выглядит так:
«fun» означает,
Имя функции.
что это функция. Открывающая фигурная
fun main (args: Array<String>) { скобка функции.
«//» обозначает ком-
ментарий. Замените Параметры функции, заключенные
строку комментария //Your code goes here в круглые скобки. Функция получает
любым кодом, который массив с именем «args», который
должен выполняться Закрывающая фигурная содержит строковые элементы.
вашей функцией.
}
скобка функции.
часто
Задаваемые
вопросы
В: Функцию main нужно добавлять в каждый файл Kotlin, О: Нет. Приложение Kotlin может состоять из десятков (и даже
который я создаю? сотен) файлов, но только один из этих файлов может содержать
функцию main — тот, который запускает приложение.
44 глава 1
первые шаги
Построение приложения
Тест-драйв Добавление функции
Обновление функции
Чтобы запустить код в IntelliJ IDEA, откройте меню Run и выберите Использование REPL
команду Run. По запросу выберите вариант AppKt. Команда строит
проект и запускает код на выполнение.
После небольшой паузы в окне вывода в нижней части IDE должно
появиться сообщение «Pow!»:
Выводимый
текст в IDE.
Pow!
AppKt.class
Теперь, когда вы знаете, как работает наша функция, посмотрим, что
в ней можно изменить, чтобы расширить ее возможности.
дальше 4 45
команды, циклы, условия
Построение приложения
Добавление функции
Что можно сделать в функции main? Обновление функции
Использование REPL
Внутри функции main (да и любой другой функции, если уж на то пошло)
происходит самое интересное. В ней можно использовать те же конструк
ции, которые используются в большинстве языков программирования.
В своем коде вы можете:
var x = 3
val name = "Cormoran" Синтаксис
x = x * 10 под увеличительным
print("x is $x.") стеклом
//This is a comment
46 глава 1