Was ist neu in Kotlin 1.4.0?

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 .





:





  1. API API





  2. API:









    1. , API





  3. : 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 :





:





  1. ( )





  2. (Gradle, Maven)









  3. / ,





  4. JVM , framework .





Kotlin ( ).





Kotlin 1.4.0 , .





, Debug Tool Window Intellij IDEA, :













  1. , ( )





  2. , Get Coroutines Dump





:









  1. , Kotlin





  2. API





:





  1. . ( Kotlin 1.3 , ). YouTrack





  2. backend ( Kotlin backend, : Kotlin/JVM, Kotlin/JS Kotlin/Native. (IR) Kotlin )





JetBrains frontend .





Frontend - , , , .





IDE, , , Kotlin .





:





  1. 60 , IDE





  2. 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).





  3. Und viele andere, die in direktem Zusammenhang mit der Erstellung eines neuen Compilers stehen.





Einige nützliche Links

  1. Kotlin 1.4.0 Versionshinweise im JetBrains Blog





  2. Neue Funktionen auf der offiziellen Kotlin-Website





  3. Kotlin 1.4.0 Online Event (auf Englisch)





  4. Statistiken aus StackOverflow Survey 2020





  5. Statistiken von JetBrains












All Articles