62 votes

Existe-t-il un moyen d’étendre un objet ?

En scala, on ne peut pas étendre `` :

donne une erreur ``

Dans mon cas, quelqu’un a défini une fonctionnalité dans un objet et je dois l’étendre (en gros ajouter une autre méthode). Quel serait le moyen le plus simple d’étendre cet objet ?

94voto

Jens Schauder Points 23468

Comme souvent, la bonne réponse dépend des besoins réels de l’entreprise. S’étendre à partir d’un objet défierait en quelque sorte le but de cet objet puisqu’il ne serait plus un singleton.

Ce qui pourrait être une solution est d’extraire le comportement dans un trait abstrait. Et créez des objets étendant ce trait comme ceci:

39voto

YoK Points 604

Si vous souhaitez utiliser des méthodes et des valeurs d’un autre objet, vous pouvez utiliser import.

13voto

Owen Points 14439

Vous ne pouvez pas réellement étendre un objet, car cela en créerait deux, et un objet par définition n’existe qu’une seule fois (modifier: eh bien, ce n’est pas tout à fait vrai, car la définition de l’objet peut être dans une classe ou une méthode).

Pour vos besoins, essayez ceci :

Il ne s’étend pas réellement, mais il vous permet d’appeler de nouvelles méthodes que celles définies à l’origine.

6voto

Mirco Dotta Points 924

La seule façon de partager du code entre deux objets est d’avoir une ou plusieurs superclasse/trait communs.

4voto

Xavier Guihot Points 6414

Notez qu’à partir de `` , vous pouvez également utiliser la composition (au lieu de l’héritage) via des clauses d’exportation qui permettent de définir des alias pour les membres sélectionnés d’un objet :

Notez que vous pouvez également restreindre les membres que vous souhaitez exporter :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X