Hello,
Bonne question et pas facile d’y répondre…
La réponse simple : Tout dépend du type retourné par la méthode.
C’est pas clair ?
Créons une première classe :
class MonObjetA {
void sayHello() => print("Bonjour je suis un objet A!");
}
On est d’accord que tu peux instancier cette classe et appeler la méthode sayHello()
.
main() {
final objetA = MonObjetA();
objetA.sayHello();
}
Maintenant créons une seconde classe :
class MonSuperObjet {
MonObjetA createA() => MonObjetA();
}
La méthode createA renvoie un objet de type MonObjetA
.
Je peux modifier ma fonction main pour récupérer objetA depuis ma classe MonSuperObjet
main() {
final superObjet = MonSuperObjet();
final objetA = superObjet.createA();
objetA.sayHello();
}
Mais je peux aussi directement faire
main() {
MonSuperObjet().createA().sayHello();
}
Donc si tu retourne un objet depuis une méthode de ta classe, tu peux directement utiliser cet objet sans l’instancier. Tout dépend ensuite de la créativité du développeur.
MODE_ASPIRINE = true;
Dans le cas de la librairie XML XmlDocument
est un XmlNode
.
Une extension XmlFindExtension
sur XmlNode
contient les méthodes findElements()
et findAllElements()
qui renvoie respectivement un Iterable<XmlElement>
.
On a donc une liste de XmlElement
en appelant la méthode findAllElements()
d’un objet XmlDocument
.
Ensuite on a la méthode map
appartenant à la classe Iterable
qui est appelée et qui renvoie un Iterable<T>
ou T
ici est un double.
Dans les paramètres de la méthode map()
on a un element
qui est de type XmlElement
forcément puisqu’il est issu de l’Iterable<XmlElement>
de la méthode findAllElements()
.
Donc pour chaque element
on appelle la méthode findElements('price')
avec le paramètre price
qui renvoie comme vu plus haut un Iterable<XmlElement>
sur lequel on appelle le getter single
de la classe Iterable
qui vérifie que la liste ne contient qu’un seul élément et le renvoie, on récupère donc un XmlElement
sur lequel on appelle le getter innerText
qui renvoie un String.
Ce String est parsé dans la méthode parse
de la classe double
ainsi notre String
se transforme en double.
Si je reprend
Ensuite on a la méthode map
appartenant à la classe Iterable
qui est appelée et qui renvoie un Iterable<T>
ou T
ici est un double.
la méthode map()
nous renvoie donc un un Iterable<double>
sur lequel on appelle la méthode reduce()
.
Et tout cela est écrit de manière compacte ce qui donne le code que tu as donné en exemple.
MODE_ASPIRINE = false;
On peut faire des choses très puissantes avec les objets
et encore une fois tout dépend de la créativité du développeur.