Heute habe ich beschlossen, über die wichtigsten Neuerungen in Kotlin 1.4.0 zu schreiben. Ich denke, dass unerfahrene Android-Entwickler sehr an diesem Thema interessiert sein werden und in der Lage sein werden, neue Funktionen in ihren Anwendungen anzuwenden. Ich hoffe auch, dass mein Artikel für professionelle Entwickler nützlich sein wird, die Kotlin wirklich lieben und bei der Entwicklung helfen.
Die Hauptthemen, die ich behandeln werde:
Syntaxinnovationen
Neue Tools in der IDE
Neuer Compiler
Qualität und Leistung
Nun, ich schlage vor, Sie gießen sich Kaffee oder Tee ein, füllen sich mit Süßigkeiten und Sie können anfangen)
Ein bisschen über Kotlin-Veröffentlichungen
:
|
|
|
Kotlin 1.4.0 |
17 , 2020, , . , IDE. |
|
Kotlin 1.4.10 Kotlin 1.4.20 Kotlin 1.4.21 |
7 , 2020, Kotlin 1.4.0 23 , 2020, , JVM. 7 , 2020, Kotlin 1.4.20 |
|
SAM -
SAM (SAM - Single Abstract Method, ).
Kotlin , SAM fun
, :
fun interface ItemSelectListener {
fun onItemSelect(position: Int): String
}
val items = listOf("Item 1", "Item 2", "Item 3")
val myListener = ItemSelectListener { position ->
items[position]
}
fun main() {
print("selected item -> ${myListener.onItemSelect(0)}")
}
: RecyclerView .
.
API
Kotlin API .
:
API API
API:
, API
: data , ..
. Kotlin 1.4.0 :
fun foo(a: Int, b: String = "", c: Int) {}
fun main() {
foo(a = 10, "Hello, World", c = 100000)
}
, ( "Hello, World"
). Kotlin .
fun reformat(str: String,
wordSeparator: Char = ' ', //
) {
// TODO
}
, default :
fun foo(a: Int = 0): String = "value -> $a" // 'a' 0
fun apply(f: () -> String): String = f()
fun main() {
println(apply(::foo))
}
, , Unit
.
foo
, , (Unit
). , , :
fun foo(f: () -> Unit) { }
fun returnValue(): Int = 42
fun main() {
foo { returnValue() } // Kotlin 1.4.0
foo(::returnValue) // Kotlin 1.4.0 ,
//
}
, :
fun foo(a: Int, vararg words: String) {}
fun useCase0(f: (Int) -> Unit) {}
fun useCase1(f: (Int, String) -> Unit) {}
fun useCase2(f: (Int, String, String) -> Unit) {}
fun test() {
useCase0(::foo)
useCase1(::foo)
useCase2(::foo)
}
, suspend
fun lockUI() {}
fun takeSuspend(f: suspend () -> Unit) {}
fun test() {
takeSuspend { lockUI() } // Kotlin 1.4.0
takeSuspend(::lockUI) // Kotlin 1.4.0
}
break and continue when , for
Kotlin 1.4.0 break
continue
when
, for
( , )
fun foo(numbers: List<Int>) {
for (num in numbers) {
when {
num % 2 == 0 -> continue
num == 10 -> break
else -> println(x)
}
}
}
IDE
Kotlin :
:
( )
(Gradle, Maven)
/ ,
JVM , framework .
Kotlin ( ).
Kotlin 1.4.0 , .
, Debug Tool Window Intellij IDEA, :
, ( )
, Get Coroutines Dump
:
-
, Kotlin
API
:
. ( Kotlin 1.3 , ). YouTrack
backend ( Kotlin backend, : Kotlin/JVM, Kotlin/JS Kotlin/Native. (IR) Kotlin )
JetBrains frontend .
Frontend - , , , .
IDE, , , Kotlin .
:
60 , IDE
Eine Erhöhung der Geschwindigkeit der IDE, die durch Folgen des Links sichtbar wird (hier ist die Zeit, um die Kotlin-Syntax beim Öffnen eines großen Projekts hervorzuheben). Die folgende Abbildung zeigt auch die Antwortzeit für die automatische Vervollständigung (die sich im Vergleich zu früheren Versionen verringert hat).
Und viele andere, die in direktem Zusammenhang mit der Erstellung eines neuen Compilers stehen.
Einige nützliche Links
Kotlin 1.4.0 Versionshinweise im JetBrains Blog
Neue Funktionen auf der offiziellen Kotlin-Website
Kotlin 1.4.0 Online Event (auf Englisch)
Statistiken aus StackOverflow Survey 2020
-