Kotlin-Scope-Funktionen zum Senden an Java-Entwickler

Was ist eine Scope-Funktion?

Generische Funktionen, die in der Standardbibliothek von Kotlin definiert sind. Da es sich um eine generische Funktion handelt, kann sie auf jeden Typ angewendet werden. Mit der Scope-Funktion können Sie mehr Kotlin-ähnlichen Code schreiben.

lass und renne

Es ist ein Bild wie die Kartenfunktion von Stream.

val str: String = "5963"

//Konvertieren Sie die Variable str in Int
//Bei Verwendung let
val i: Int = str.let { it.toInt() }

//Konvertieren Sie die Variable str in Int
//Bei Verwendung von run
val i2: Int = str.run { this.toInt() }

Der Lambda-Ausdruck, der auf "let" folgt, hat ein Argument. Dieses Argument bezieht sich auf "str". Der Lambda-Ausdruck nach "run" hat keine Argumente. Stattdessen lautet diese Referenz in diesem Lambda-Ausdruck "str". Das Ergebnis des Lambda-Ausdrucks ist der Rückgabewert von "let" und "run".

Das Objekt, das die Funktion aufruft, wie beispielsweise die Variable "str" in diesem Beispiel, wird auch als "Racer-Objekt" bezeichnet.

Wo zu verwenden

fun getName(): String? = ""
fun makeGreeting(name: String) = "Hello, $name"

fun greet(): String? {
    val name = getName()
    if (name == null) {
        return null
    }

    return makeGreeting(name)
}

In der Funktion greet () Übergeben Sie das Ergebnis von getName () an diemakeGreeting ()Funktion und Das Ergebnis ist der Rückgabewert der Funktion greet ().

Der Rückgabewert von "getName ()" ist jedoch ein null-toleranter Typ, sodass einmal eine Nullprüfung erforderlich ist. Lassen Sie uns dies mit let umschreiben.

fun greet(): String? {
    return getName()?.let { makeGreeting(it) }
}

Rufen Sie let mit einem sicheren Aufruf des Ergebnisses von getName () auf. Auf diese Weise können Sie ziemlich ordentlich schreiben. Dies ist nützlich für sichere Aufrufe und zum Übergeben des Ergebnisses einer sicheren Umwandlung an ein Funktionsargument. (Natürlich wird es auch oft in anderen Fällen verwendet.)

bewerben und auch

Ähnlich wie let and run, aber der Rückgabewert ist immer das Empfängerobjekt.

val str: String = "5963"

//Standardausgabe der Variablen str
//Wenn auch verwendet wird
val str2: String = str.also { print(it) }

//Standardausgabe der Variablen str
//Bei der Anwendung anwenden
val str3: String = str.apply { print(this) }

Wo zu verwenden

class Person {
    var firstName: String? = null
    var middleName: String? = null
    var lastName: String? = null
}

fun registerNewPerson() : Person {
    val person = Person()
    person.firstName = "Kumiko"
    person.middleName = "Susan"
    person.lastName = "Yamamoto"
    return person
}

Die Funktion "registerNewPerson" erstellt eine neue Instanz von "Person" und gibt sie zurück. Es initialisiert nur "Person", muss aber einmal in eine Variable eingefügt werden.

Verwenden wir "auch".

fun registerNewPerson() : Person {
    return Person().also {
        it.firstName = "Kumiko"
        it.middleName = "Susan"
        it.lastName = "Yamamoto"
    }
}

Es kann implementiert werden, ohne eine temporäre Variable für "Person" zu erstellen. Beim Umgang mit Objekten, die keine Builder-Muster usw. sind. Da der Initialisierungsprozess des Objekts in der Bereichsfunktion organisiert ist, führt dies zu einer verbesserten Lesbarkeit.

with

mit ist ein wenig seltsam. Es ist wie "run", das das Empfängerobjekt als Argument übergibt.

val str = "5963"
val i: Int = with(str) { this.toInt() }

Wo zu verwenden

class Greeter {
    fun greet(): String = "Hello, world"
}

fun greet(greeter: Greeter) = with(greeter) { 
    greet()
}

Verwenden Sie diese Option, um eine einzelne Ausdrucksfunktion zu erstellen. Diese Referenz ändert sich und kann in einem anderen Kontext geschrieben werden.

Recommended Posts

Kotlin-Scope-Funktionen zum Senden an Java-Entwickler
Kotlin-Funktionen und Lambdas zum Senden an Java-Entwickler
Kotlin-Klasse zum Senden an Java-Entwickler
Kotlins Klasse Teil 2 zum Senden an Java-Entwickler
Erste Schritte mit Kotlin zum Senden an Java-Entwickler
Kotlins Null-Sicherheit zum Senden an Java-Entwickler
Ich möchte verschiedene Funktionen mit Kotlin und Java implementieren!
Kotlin-Generika für Java-Entwickler
[Android] Konvertieren Sie Android Java-Code in Kotlin
Konvertieren Sie alle Android-Apps (Java) in Kotlin
Einführung in Kotlin für iOS-Entwickler lin ー Kotlin-Erstellung
Java: So senden Sie Werte von Servlet zu Servlet
Tipps zur Interoperabilität mit Kotlin zum Senden an Java-Entwickler
Einführung in Kotlin für iOS-Entwickler ④-Typ
Memo für die Migration von Java nach Kotlin
Einführung in Kotlin in ein bestehendes Java Maven-Projekt
Ich möchte eine E-Mail in Java senden.
Grundeinstellungen für das Umschreiben von Java-Projekten in Kotlin
Java-Variablenbereich (Bereich)
Java-Variablenbereich
[Java] Einführung in Java
Einführung in Kotlin für iOS-Entwickler ③-About gradle
Was ich getan habe, als ich Java zu Kotlin konvertiert habe
Einführung in Java
Java-Sitzungsumfang
Einführung in Kotlin für iOS-Entwickler ①-Umgebungskonstruktion
Wo Java-Programmierer dazu neigen, über Kotlin zu stolpern
Entspricht dem Geltungsbereich
Einführung in Kotlin für iOS-Entwickler ②-Projekterstellung
Wie schreibe ich Java String # getBytes in Kotlin?
Was Java-Unerfahrene getan haben, um Kotlin zu studieren
Aufrufen von Funktionen in großen Mengen mit Java Reflection
Beherrschen von Kotlin ~ Konvertieren von Java-Dateien in Kotlin-Dateien Road to Graduation ~ Teil 3
Beherrschen von Kotlin ~ Konvertieren von Java-Dateien in Kotlin-Dateien Road to Graduation ~ Teil 2
Senden Sie mir eine Roadmap, um ein vollwertiger Java-Ingenieur zu werden
Beherrschen von Kotlin ~ Konvertieren von Java-Dateien in Kotlin-Dateien Road to Graduation ~ Teil 1
Ich möchte Bildschirmübergänge mit Kotlin und Java machen!
[Einführung in Java] Variablenbereich (Bereich, lokale Variable, Instanzvariable, statische Variable)
Änderungen von Java 8 zu Java 11
Summe von Java_1 bis 100
Kotlins Verbesserungen an Java
[Java, Kotlin] Typabweichung
Von Java zu Ruby !!
Einführung in den Java-Befehl
Verwendung des mit Tensorflow 2.0 trainierten Modells mit Kotlin / Java
So stellen Sie eine Kotlin (Java) -App auf AWS fargate bereit
Der LOG Java Producer von Java Library-Alibi Cloud hilft beim Senden von Daten an Protokolldienste