Comment pouvons-nous retourner plusieurs valeurs à partir d'une fonction de Kotlin comme nous le faisons dans swift?
Comment puis-je retourner les 3 valeurs de données de même type(Int) à partir d'une fonction de Kotlin?
Je suis en train d'essayer de revenir le temps d'une journée, j'ai besoin de revenir à l'Heure, la Minute et la Seconde comme des entiers distincts, mais tous d'un coup à partir de la même fonction, est-ce possible?
Dans swift nous le faisons comme suit,
func getTime() -> (Int, Int, Int) {
...
return ( hour, minute, second)
}
pouvons-nous atteindre cet objectif dans Kotlin?
P. S: je sais que je peux utiliser de Tableau ou table de hachage pour cela, mais je veux savoir si il existe quelque chose dans kotlin comme il est en swift.
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas créer arbitraire de n-uplets dans Kotlin, au lieu de cela, vous pouvez utiliser classes de données. Une option est d'utiliser le construit en
Pair
etTriple
classes qui sont génériques et peuvent tenir deux ou trois valeurs, respectivement. Vous pouvez utiliser la combinaison de ces avec déstructuration des déclarations comme ceci:Vous pouvez également se déstructurent un
List
ouArray
, jusqu'à la première 5 éléments:Les plus idiomatiques cependant, serait de définir votre propre classe de données, ce qui permet un retour significatif du type de votre fonction:
Selon la Kotlin documentation (https://kotlinlang.org/docs/reference/multi-declarations.html#example-returning-two-values-from-a-function) vous pouvez l'obtenir comme ça:
Il semble que vous êtes au courant de la réponse la plus évidente de la création d'une classe spécifique pour gérer le temps. Donc, je suppose que vous êtes en essayant d'éviter les petits tracas de la création d'une classe, ou d'accéder à chaque élément d'un tableau, etc. et sont à la recherche de la solution la plus courte en termes de code supplémentaire. Je dirais:
et l'utiliser avec la déconstruction:
Si vous avez besoin de 4 ou 5 valeurs de retour (vous ne pouvez pas déconstruire plus de 5), aller avec
Array
:et
P. S.: vous pouvez utiliser moins de variables qu'il y a des valeurs lors de la déconstruction, comme
var (a, b) = getTime()
mais vous ne pouvez pas utiliser plus d'ou vous aurez uneArrayIndexOutOfBoundsException
vous pouvez retourner plusieurs valeurs comme indiqué ci-dessous
voir ce la documentation
pour plus d'exemple voir cette lien
Il n'y a pas de tuple dans Kotlin. Alternativement, vous pouvez utiliser classe de données avec déstructuration de la déclaration de.
Si vous ne voulez pas créer de classe de données pour chaque cas spécifique, vous pouvez créer quelques génériques de classes de données et l'utilisation
typealias
pour plus de clarté.Mais, évidemment, l'inconvénient est que vous devez faire usage de déstructuration de la déclaration afin de lui donner un bon nom de la propriété.
Alors que, généralement, une fonction peut renvoyer qu'une seule valeur, dans Kotlin, en tirant parti des avantages de la Paire, le type et la déstructuration des déclarations, on peut revenir à deux variables à partir d'une fonction. Considérons l'exemple suivant:
À partir de: Fonctionnelle Kotlin livre