Plusieurs variables laisser dans Kotlin
Est-il possible de la chaîne de multiples permet pour de multiples nullable variables dans kotlin?
fun example(first: String?, second: String?) {
first?.let {
second?.let {
//Do something just if both are != null
}
}
}
Je veux dire, à quelque chose comme ceci:
fun example(first: String?, second: String?) {
first?.let && second?.let {
//Do something just if both are != null
}
}
- Voulez-vous N éléments, et pas seulement 2? Faire tous les éléments ont besoin du même type ou de types différents? Doit toutes les valeurs de l'être transmis à la fonction, sous forme de liste, ou que les paramètres individuels? Si la valeur de retour un seul élément ou d'un groupe de même nombre d'éléments que l'entrée?
- J'ai besoin de tous les arguments, peut-être deux, pour ce cas, mais il voulait aussi une façon de faire pour en savoir plus, dans la swift est si facile.
- Vous cherchez quelque chose de différent que les réponses ci-dessous, si oui commentaire quelle est la différence que vous cherchez.
- Comment devrait-il se référer à la première "elle" dans le deuxième laissez-bloc?
Vous devez vous connecter pour publier un commentaire.
Si vous êtes intéressé voici deux de mes fonctions à la résolution de ce.
Utilisation:
Voici quelques variantes, en fonction de ce que le style que vous souhaitez utiliser, si vous avez tout de même ou de différents types, et si la liste inconnu nombre d'éléments...
Types différents, tous ne doit pas être null pour calculer une nouvelle valeur
Pour les types mixtes, vous pouvez construire une série de fonctions pour chaque paramètre nombre qui peut paraître stupide, mais fonctionne bien pour les types mixtes:
Exemple d'utilisation:
Exécuter un bloc de code lorsque la liste n'a pas la valeur null éléments
Deux saveurs, ici, tout d'abord exécuter un bloc de code lorsqu'une liste est non null éléments, et la seconde à faire de même lorsqu'une liste a au moins une valeur non null élément. Les deux cas, passer d'une liste de non-nulle d'éléments pour le bloc de code:
Fonctions:
Exemple d'utilisation:
Une légère modification de la fonction de recevoir la liste des éléments et effectuer les mêmes opérations:
Exemple d'utilisation:
Ces variations pourraient être modifiés pour changer les valeurs de retour comme
let()
.Utiliser le premier non-null article (Fusionner)
Similaire à SQL Fusionnent fonction, de retour de la première non-nulle de l'élément. Deux saveurs de la fonction:
Exemple d'utilisation:
Autres variations
...Il y a d'autres variantes, mais avec plus d'une spécification de ce qui pourrait être réduit.
whenAllNotNull
avec la déstructuration de la sorte:listOf(a, b, c).whenAllNotNull { (d, e, f) -> println("$d $e $f")
.Vous pouvez écrire votre propre fonction pour que:
Vous pouvez créer un
arrayIfNoNulls
fonction:Vous pouvez alors l'utiliser pour un nombre variable de valeurs avec
let
:Si vous disposez déjà d'un tableau vous pouvez créer un
takeIfNoNulls
fonction (inspiré partakeIf
etrequireNoNulls
):Exemple:
Pour le cas de la simple vérification de deux valeurs et aussi de ne pas avoir à travailler avec des listes:
Exemple d'utilisation:
Au moment de la rédaction de ce Kotlin 1.3 ne dispose pas d'un mécanisme natif de prendre en charge plusieurs et enchaîné laisse une belle doublure.
La Swift prend en charge plusieurs langue et les chaînes de permet de, très élégant (à mon avis) via
Ça me rend triste à chaque fois que j'ai besoin de faire quelque chose comme ci-dessus dans Kotlin, car le code finit par être bavard et un peu moche.
J'espère que nous allons obtenir quelque chose de similaire dans Kotlin un de ces jours!
Je préfère pour le résoudre à l'aide de la suite des fonctions d'assistance:
Et voici comment vous devez les utiliser:
En fait, vous pouvez simplement faire ceci, vous savez? 😉
Il n'y a rien de mal à utiliser un normal null-le check-in Kotlin.
Et c'est beaucoup plus lisible pour tout le monde qui va chercher dans votre code.
let
raccourci pour faire ces contrôlesPour toute somme de valeurs à vérifier, vous pouvez utiliser ceci:
Et il sera utilisé comme ceci:
les éléments envoyés pour le bloc en utilisant le caractère générique, vous devez vérifier les types de si vous souhaitez accéder aux valeurs, si vous avez besoin d'utiliser un seul type de vous, peuvent muter ce à des génériques