
Котлин - Слушатели обречены
С первых дней появления Android разработка велась строго на Java, сначала с использованием устаревшего и грубоватого Eclipse, а затем был осуществлен переход на Android Studio (настроенная версия IntelliJ IDEA от Jetbrains). С этим изменением мир разработки под Android стал немного ярче, но мы по-прежнему использовали Java. Java была в порядке, но уже старела.
С другой стороны мобильной разработки…
В 2014 году Apple представила Swift, сделав разработку под iOS более функциональной. Apple предоставила Swift прекрасные функции, которые сделали разработку iOS намного более продуктивной, несмотря на проблему переноса кода из одной версии Swift в другую. Однако был представлен Swift 3, и Apple реализовала стабильность ABI, которая решила эту проблему.
Вы можете спросить, почему я даю вам эту информацию. Что ж, это важно для контекста, в котором появился Котлин. iOS была впереди в функциональной игре, пока…
Jetbrains начали работу над новым языком под названием Kotlin. Используя компилятор Java, они сделали возможным функциональное программирование. Google увидел в этом возможность предоставить разработчикам Android множество новых инструментов и сделать разработку Android более продуктивной, как это было в iOS со Swift; на самом деле сейчас между обеими платформами есть некоторое сходство.
Слушатели обречены
Одна из вещей, которые обычно используются для обработки асинхронных задач в Java, - это интерфейсы слушателя, которые используются для вызова метода и создания реализации интерфейса с обратным вызовом. В Kotlin эта идея заменена лямбда-выражениями или тем, что разработчики iOS называют замыканиями. Эти замкнутые части логики действительно мощны и даже выглядят одинаково:
Swift
{ var: String -> Void in
var.uppercased()
}
Котлин
{ var: String -> Unit
var.toUpperCase()
}
По старому
interface MyUpperCaseListener {
void handleString(String var);
}
//implementation
…
new MyUpperCaseListener() {
void handleString(String var) {
var.toUpperCase();
}
}
Видите, насколько похожи Swift и Kotlin? Обе платформы определяют параметры. В Kotlin тип возвращаемого значения всегда определяется, в Swift это происходит только при закрытии одной строки.
С помощью Kotlin мы можем сократить объем кода, необходимого для обработки обратного вызова, от создания интерфейса с одной функцией до анонимного блока кода, который написан непосредственно в том месте, где его нужно использовать.