Освой Kotlin играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Kotlin

Любой кот линяет. Из выпавшей шерсти можно собрать второго кота. По такой же аналогии из Java можно создать новый язык Kotlin, образованный из двух слов Kot linяет. Есть ещё неправдоподобная версия об острове в Финском заливе, которая просто смешна и не заслуживает внимания.

Kotlin

17 мая 2017 года на Google IO объявили о поддержке Kotlin в Android Studio 3.0. Пора учить новый язык, который заслужил много лестных отзывов от опытных разработчиков.

Что нового

Август 2020. Вышла версия 1.4.0. Из интересного:

Можно использовать завершающую запятую в параметрах и аргументах. Это удобно, что можно быстро менять строчки местами, копируя всю строку вместе с запятой.


val colors = listOf(
    "red",
    "green",
    "blue", //trailing comma
)

fun reformat(
    str: String,
    uppercaseFirstLetter: Boolean = true,
    wordSeparator: Character = ' ', //trailing comma
) {
    // ...
}

Можно использовать break и continue в выражениях when удобным способом.


fun test(xs: List<Int>) {
    for (x in xs) {
        when (x) {
            2 -> continue
            17 -> break
            else -> println(x)
        }
    }
}

Новая функция setOfNotNull. Новые функции для коллекций (ищите поиском). Новые функции для массивов (ищите поиском)

3 марта 2020 года вышла версия 1.3.70. Новые классы и функции для коллекций.

22 августа 2019 вышла версия 1.3.50. Появилось новое: Duration and time measurement API.

19 июня 2019 года вышла версия 1.3.40.

В октябре 2018 года вышла версия Kotlin 1.3. Новые функции ByteArray.decodeToString, String.encodeToByteArray, CharArray.concatToString, String.toCharArray.

Корутины вышли из экспериментального статуса.

Функцию main() можно использовать без параметров.

Появились беззнаковые типы: UByte (0...255), UShort (0...65535), UInt (0...2^32 - 1), ULong (0...2^64 - 1).

Новый мультиплатформенный класс kotlin.random.Random: println(Random.nextInt(43))


28 ноября 2017 года вышла новая версия Kotlin 1.2.

Добавлены новые функции для изменяемых списков: fill, replaceAll, shuffle.

Добавлена новая функция shuffled для неизменяемых списков.

Добавлены математические функции. Например, можем узнать, что число является отрицательным.


val item = -100
println("${item.sign}") // вернёт -1

Продолжить изучение Kotlin

Сконвертировать существующий Java-код на Kotlin можно через меню Code | Convert Java File to Kotlin File.

Если скопировать в буфер обмена код на Java и вставить его в kt-файл, то студия автоматически сконвертирует код.

На заметку: Файлы с кодом на Kotlin смотрятся странно в папке java в проекте студии. Открываем файл gradle.build модуля и в секции android добавляем блок:


sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
}

Переключаемся в режим Project и переименовываем папку java. Приложение будет работать по-прежнему. В режиме Android по-прежнему будет видна папка java, это жестко прописано в студии. Может потом поправят этот момент.

Tools | Kotlin

Также в студии есть целый раздел меню для настройки: Tools | Kotlin.

Show Kotlin Bytecode

При выборе Show Kotlin Bytecode можно просматривать любой файл *.kt, в отдельном окне будет виден байткод файла. Если в нём не будет данных, которых нельзя представить в Java, то также будет доступна возможность декомпилировать его в Java-код кнопкой Decompile.

Kotlin REPL

Интересная оболочка в виде командной строки. Можно быстро написать какое-то выражение и получить результат.

Anko

Библиотека Anko была специально разработана для удобного программирования под Android, сокращая количество кода для вызовов намерений, диалоговых окон, журналирования и т.д.

Спустя четыре года её объявили устаревшей и поддержка прекратилась. А всё почему? Выбрали какое-то непонятное название. Назвали бы Barsik, тогда все бы использовали её.

Примеры на Kotlin

Android KTX

Щелчок кнопки/Счётчик ворон

Переключение между экранами приложения

Запускаем съёмку видео через Intent

ShareActionProvider (Провайдер действия передачи информации)

Android: ValueAnimator

RxKotlin

Книги

Книга, выпущенная в 2020 году Head First. Kotlin (на русском)


Первая книга на русском языке "Kotlin в действии". В начале книге перечисляются благодарности, в том числе - Наконец, мы хотели бы поблагодарить наши семьи и котов за то, что они делают этот мир лучше.

Реклама