Коктейль из Java, Kotlin и ReactJS
Итак, я сменил галеру место работы. И, неожиданно, технологии. Java есть, номинально, но на текущий момент, плотно уже 3 недели изучаю Kotlin в связке с ReactJS.
До этого я конечно слышал, про них, но не пробовал. По котлину пару обучающих видео посмотрел и вперед.
Первые впечатления: точка-с-запятой не нужна, типы указываем после переменной, тернарный оператор урезан и стал «элвис» оператором, статических полей нет, финальная и нефинальная переменные обозначаются val и var, функции заменили методы, все классы по-умолчанию финальные. Аааааа-ааа-а!!!
Пример:
fun getPrintTemplate(data: Map<String, Any?>, metadata: MutableList<String> = mutableListOf()): MutableList<String> {
data.forEach { entry ->
val value = entry.value
if (value is Collection<*> && value.isNotEmpty()) {
(value.first() as Map<String, Any?>)
.keys
.forEach { subKey -> metadata.add("${entry.key}.$subKey") }
}
if (value is Map<*, *>) getPrintTemplate(value as Map<String, Any?>, metadata)
}
return metadata
}
По реакту — это даже не фреймворк, напрямую не пишем? а под котлин это выглядит как работа с обычными классами.
Вот например создаем элемент:
fun RBuilder.downloadLink(fileName: String, dataFunc: suspend () -> String, body: ((RBuilder).() -> Unit)? = null) {
a {
attrs.onClickFunction = {
async {
val base64data = dataFunc()
downloadFile(base64data, fileName).invoke()
}
}
if (body != null) {
body()
} else {
+fileName
+" "
icon("download")
}
}
}
А потом обращаемся к нему:
row{
downloadLink(attach[Attachment.displayName], dataFunc = { handleDownload() })
}
В общем как новый язык изучать. Угораздило жеж ))
Добавить комментарий