Quel serait le type de retour de cette méthode dans groovy?
J'ai une méthode comme ceci:
def getInformation () {
return [true, "reason why"]
}
qui je suis en utilisant comme ce
def (isClear, reason) = getInformation()
Est-il possible de définir un type de retour de cette méthode, donc de son mieux pour lire quand quelqu'un va à travers la méthode?
OriginalL'auteur Anthony | 2013-05-02
Vous devez vous connecter pour publier un commentaire.
Le vrai type de retour de cette méthode est l'Objet, depuis que vous avez déclarée à l'aide de 'def'. Cela signifie qu'il peut retourner quoi que ce soit, quel que soit l'objet que vous êtes en train de revenir.
Le code suivant devrait être tout aussi valable:
ou
Mais la returntype de la méthode n'a pas changé.
La vraie question ici est: pourquoi choisir une telle approche? À mon avis, la suivante rendrait les choses tellement plus clair:
Ce serait beaucoup plus clair à l'appelant, et la seule chose que vous auriez besoin de créer est une simple classe:
Maintenant, vous avez clairement défini, l'API. Je n'aurais jamais utiliser def dans une signature de méthode, à cause du problème auquel vous êtes confronté ici.
Si je fais cette classe. Où serait le meilleur endroit pour le mettre? La fonction en question est dans ma classe de service. Dois-je mettre de la
Result
classe danssrc/groovy
?+1, également, vous pouvez toujours garder la même affectation multiple de la syntaxe par la mise en œuvre de
getAt(Integer)
dans vos résultats à la classe: mrhaki.blogspot.com.br/2010/05/...Aussi, que sur le plan conceptuel ressemble plus à un n-uplet: groovy.329449.n5.nabble.com/...
Bonjour Anthony, je ne suis pas sûr pourquoi, la création d'une nouvelle classe serait pour beaucoup. Comme je l'ai dit, il est beaucoup plus clair pour l'appelant. Aussi, la question que vous avez accepté que la bonne réponse n'est pas droit. Vous avez demandé le type de retour de la méthode, et c'est l'Objet, pas de Liste. Je ne dis pas que c'est la meilleure réponse il y a, mais au moins, c'est plus de droite 🙂
OriginalL'auteur Erik Pragt
Le type de retour sera Liste de, plus exactement ArrayList avec deux éléments de type Booléen, Chaîne de
Et une Liste générique ne peut être d'un type simple (dans ce cas l'Objet), il n'y a aucun moyen que vous pouvez définir plusieurs types de retour.
OriginalL'auteur fabiangebert
Anthony, mieux dans votre cas, pour retourner une carte
[isClear:true, reason:"reason why"]
. Puis dans votre code obtenir les valeurs:Merci, fixe.
OriginalL'auteur Mr. Cat
Pas vraiment, vous pouvez le changer à ce point, mais il n'est pas beaucoup mieux:
Toutefois, vous pouvez définir les types des variables qui sont attribuées les valeurs de retour, ce qui rend cette partie du code plus lisible.
OriginalL'auteur Dónal