Was bedeutet das Pluszeichen vor einer Kotlin-Methode?


8

Ich studiere Kotlin und habe mir AndroidDevSummit angesehen, genauer gesagt die Präsentation "Undestanding Compose" von Leland Richardson.

Während der Präsentation (bei 28min26sec) zeigte er den folgenden Code:

@Composable
fun App(items: List<String>, query: String) {
    val results = +memo(items, query) {
        items.filter { it.matches(query) }
    }
    // ...
}

Was bedeutet das Pluszeichen "+" vor der Methode "memo"?


1
Wenn eine Operatorüberladung wie diese verwendet wird, können Sie in Intellij / Android Studio bei gedrückter Strg-Taste darauf klicken, um zur Funktionsdeklaration zu springen und zu sehen, was sie bewirkt.
Tenfour04

Ok, @ Tenfour04, danke, aber es ist nur eine Funktion und nicht der Zweck des Pluszeichens, stimmt das?
Jose Silva

1
Recht. Ich sage nur, dass Sie damit herausfinden können, welche Funktion der Operator aufruft.
Tenfour04

1
Ja, Sie können zur Deklaration des springen unaryPlus, aber das bedeutet nicht, dass Sie den Zweck verstehen können. Dort finden Sie nur den Kommentar "Löst den Effekt auf und gibt das Ergebnis zurück."
Zeiger Null

Antworten:


2

+ist wie ein Operator, der für Effekte aufruft. Die Funktionen , die Rückkehr Effekte Rückkehr nur ein Objekt für die Wirkung und die + sagt : „fügen Sie es in die Zusammensetzung hier“

von Adam Powell über Kotlin Slack

Der volle Faden auf Kotlin locker

Der +Operator wird in Zukunft entfernt, da Staaten wahrscheinlich Property Delegates verwenden werden, etwa so:var myState by state { "value" }


2
Vielen Dank an @DevSrSouza, aber können Sie klarstellen, was es bewirkt und was ein Effekt ist? Die Links des Slack sind nicht offen verfügbar.
Jose Silva

1
Nach einem Vortrag, den ich vor Tagen gehört habe, sind Effekte alles, was sich in der realen Welt ändern kann, wie ein Wert, den Sie an einer anderen Stelle Ihrer App ändern und die Benutzeroberfläche beeinflussen können. Versuchen Sie, über diesen Link beizutreten: slack.kotlinlang.org
DevSrSouza
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.