Fonctions de portée Kotlin à envoyer aux développeurs Java

Qu'est-ce qu'une fonction d'étendue?

Fonctions génériques définies dans la bibliothèque standard de Kotlin. Puisqu'il s'agit d'une fonction générique, elle peut être appliquée à n'importe quel type. En utilisant la fonction scope, vous pouvez écrire plus de code de type Kotlin.

laisser et courir

C'est une image comme la fonction de carte de Stream.

val str: String = "5963"

//Convertir la variable str en Int
//Lors de l'utilisation de let
val i: Int = str.let { it.toInt() }

//Convertir la variable str en Int
//Lors de l'utilisation de run
val i2: Int = str.run { this.toInt() }

L'expression lambda qui suit «let» a un argument. Cet argument est une référence à «str». L'expression lambda qui suit run n'a pas d'arguments. Au lieu de cela, cette référence dans cette expression lambda est «str». Le résultat de l'expression lambda est la valeur de retour de let et run.

En outre, l'objet que la fonction est appelée, comme la variable str dans cet exemple, est appelé l'objet ** Lacy bar **.

Où utiliser

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

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

    return makeGreeting(name)
}

Dans la fonction greet () Passez le résultat de getName () à la fonctionmakeGreeting ()et Le résultat est la valeur de retour de la fonction greet ().

Cependant, la valeur de retour de getName () est un type à tolérance nulle, donc une vérification nulle est requise une fois. Réécrivons ceci en utilisant let.

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

Appelez let avec un appel sûr au résultat de getName (). De cette façon, vous pouvez écrire assez proprement. Ceci est utile pour les appels sécurisés et pour transmettre le résultat d'une conversion sécurisée à un argument de fonction. (Bien sûr, il est également souvent utilisé dans d'autres cas.)

appliquer et aussi

Similaire à let and run, mais la valeur de retour est toujours l'objet récepteur.

val str: String = "5963"

//Sortie standard de la variable str
//Quand est également utilisé
val str2: String = str.also { print(it) }

//Sortie standard de la variable str
//Lors de l'utilisation appliquer
val str3: String = str.apply { print(this) }

Où utiliser

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
}

La fonction registerNewPerson crée une nouvelle instance de Person et la renvoie. Il initialise simplement Person, mais il doit être placé une fois dans une variable.

Utilisons «aussi».

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

Il peut être implémenté sans créer de variable temporaire pour Person. Lorsque vous traitez avec des objets qui ne sont pas des modèles Builder, etc. Puisque le processus d'initialisation de l'objet est organisé dans la fonction scope, il conduit à une meilleure lisibilité.

with

avec est un peu étrange. C'est comme run, qui passe l'objet récepteur comme argument.

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

Où utiliser

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

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

Utilisez avec pour en faire une fonction d'expression unique. Cette référence changera et pourra être écrite dans un contexte différent.

Recommended Posts

Fonctions de portée Kotlin à envoyer aux développeurs Java
Fonctions Kotlin et lambdas à envoyer aux développeurs Java
Classe Kotlin à envoyer aux développeurs Java
Kotlin's Class part.2 à envoyer aux développeurs Java
Premiers pas avec Kotlin à envoyer aux développeurs Java
La sécurité Null de Kotlin à envoyer aux développeurs Java
Je veux implémenter diverses fonctions avec kotlin et java!
Génériques Kotlin pour les développeurs Java
[Android] Convertir le code Java Android en Kotlin
Convertir toutes les applications Android (Java) en Kotlin
Introduction à kotlin pour les développeurs iOS ⑥ ー création de kotlin
Java: Comment envoyer des valeurs du servlet au servlet
Conseils d'interopérabilité avec Kotlin à envoyer aux développeurs Java
Introduction à kotlin pour les développeurs iOS ④-type
Mémo pour la migration de Java vers Kotlin
Présentation de Kotlin à un projet Java Maven existant
Je souhaite envoyer un e-mail en Java.
Paramètres initiaux pour la réécriture de projets Java sur Kotlin
Portée de la variable Java (portée)
Portée de la variable Java
[Java] Introduction à Java
Introduction à kotlin pour les développeurs iOS ③-À propos de gradle
Ce que j'ai fait lorsque j'ai converti Java en Kotlin
Introduction à Java
Portée de session Java
Introduction à kotlin pour les développeurs iOS ①-Construction de l'environnement
Où les programmeurs Java ont tendance à trébucher sur Kotlin
Correspond à la portée
Introduction à kotlin pour les développeurs iOS ②-Création de projet
Comment écrire Java String # getBytes dans Kotlin?
Ce que des personnes inexpérimentées en Java ont fait pour étudier Kotlin
Comment appeler des fonctions en bloc avec la réflexion Java
Maîtriser Kotlin ~ Convertir un fichier Java en fichier Kotlin Road to Graduation ~ Partie 3
Maîtriser Kotlin ~ Convertir un fichier Java en fichier Kotlin Road to Graduation ~ Partie 2
Envoyez-moi une feuille de route pour devenir un ingénieur Java à part entière
Maîtriser Kotlin ~ Convertir un fichier Java en fichier Kotlin Road to Graduation ~ Partie 1
Je veux faire des transitions d'écran avec kotlin et java!
[Introduction à Java] Portée de la variable (portée, variable locale, variable d'instance, variable statique)
Changements de Java 8 à Java 11
Somme de Java_1 à 100
Améliorations de Kotlin à Java
[Java, Kotlin] Variance de type
De Java à Ruby !!
Introduction à la commande java
Comment utiliser le modèle entraîné Tensorflow 2.0 avec Kotlin / Java
Comment déployer une application kotlin (java) sur AWS Fargate
Java Library-Alibi Cloud's LOG Java Producer aide à envoyer des données aux services de journalisation