Précédent   Forum du club des développeurs et IT Pro > Java > Général Java > Langage > Scala
Scala Forum d'entraide pour le langage Scala
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 16/08/2010, 10h46   #1
sleroux
Membre actif
 
Leroux Sylvain
Inscription : mai 2010
Messages : 36
Détails du profil
Informations personnelles :
Nom : Leroux Sylvain
Localisation : France

Informations forums :
Inscription : mai 2010
Messages : 36
Points : 154
Points : 154
Par défaut [Article] Traits Scala et décorateurs

Bonjour,

Je viens de mettre la dernière main à l'article Traits Scala et décorateurs.

Mon idée était de présenter la notion de trait en montrant sur un cas d'utilisation comment cet outil peut offrir une alternative au "design pattern" décorateur que l'en rencontre fréquemment en Java et en POO en général. Vous verrez au passage que si les deux concepts sont proches, il n'en reste pas moins des différences...

N'hésitez pas à faire des commentaires!
- Sylvain
sleroux est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 06/09/2010, 02h02   #2
bredelet
Membre éclairé
 
Inscription : juillet 2008
Messages : 152
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 152
Points : 300
Points : 300
Bonne introduction aux mixins de Scala.

En effet faire de Forfait un mixin n'est pas trop nécessaire, mais cela permet à l'article de soulever des points intéressants.

Une question de la part d'un novice: tu dis qu'un trait n'a pas de constructeur, mais dans l'exemple je vois
Code :
super.impute(credit, "** Forfait **")
Cela n'est pas une instruction de constructeur?

(note: dans mon langage dodo les traits/mixins s'appellent "qualifier")
bredelet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2010, 09h11   #3
George7
Membre Expert
 
Avatar de George7
 
Homme
Inscription : août 2006
Messages : 1 234
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : août 2006
Messages : 1 234
Points : 1 602
Points : 1 602
Salut

Citation:
Envoyé par bredelet Voir le message
Une question de la part d'un novice: tu dis qu'un trait n'a pas de constructeur, mais dans l'exemple je vois
Code :
super.impute(credit, "** Forfait **")
Cela n'est pas une instruction de constructeur?
En fait en Scala, un trait a un constructeur par défaut, mais ne peut (pour le moment) avoir de paramètres. Un trait peut donc avoir des instructions de constructeur définies dans le corps de la classe, mais tu ne peux pas écrire ceci :
Code :
1
2
 
trait Test(val test: String)
par exemple.
__________________
"Ikea / furnishing = OSGi / software : They allow to have very modular things, but trying to put them together generally drives you crazy"
-- Mario Fusco

Pour vos développements Java : apprenez à utiliser la javadoc
George7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2010, 14h57   #4
sleroux
Membre actif
 
Leroux Sylvain
Inscription : mai 2010
Messages : 36
Détails du profil
Informations personnelles :
Nom : Leroux Sylvain
Localisation : France

Informations forums :
Inscription : mai 2010
Messages : 36
Points : 154
Points : 154
Merci pour ces retours!


En effet, je me suis mal exprimé: en Scala, un trait ne peut pas avoir de constructeur acceptant des paramètres. Et comme le souligne George7, le code dans le corps du trait définit un constructeur par défaut (sans paramètre). On peut assimiler cela à un bloc d'initialisation statique en Java.

Citation:
Envoyé par http://www.scala-lang.org/node/126
In contrast to classes, traits may not have constructor parameterss.
Sur le forum de Scala on trouve quelques allusions au support dans un avenir indéterminé pour les constructeurs de traits avec paramètres (http://www.scala-lang.org/node/386). Mais je ne sais pas où ça en est actuellement. J'espère que des progrès seront fait de ce côté là: en effet, personnellement je trouve la syntaxe à base des early initializers très peu lisible et potentiellement source d'erreur...

A+,
- Sylvain
sleroux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2010, 15h12   #5
George7
Membre Expert
 
Avatar de George7
 
Homme
Inscription : août 2006
Messages : 1 234
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : août 2006
Messages : 1 234
Points : 1 602
Points : 1 602
Citation:
Envoyé par sleroux Voir le message
Merci pour ces retours!


En effet, je me suis mal exprimé: en Scala, un trait ne peut pas avoir de constructeur acceptant des paramètres. Et comme le souligne George7, le code dans le corps du trait définit un constructeur par défaut (sans paramètre). On peut assimiler cela à un bloc d'initialisation statique en Java.



Sur le forum de Scala on trouve quelques allusions au support dans un avenir indéterminé pour les constructeurs de traits avec paramètres (http://www.scala-lang.org/node/386). Mais je ne sais pas où ça en est actuellement. J'espère que des progrès seront fait de ce côté là: en effet, personnellement je trouve la syntaxe à base des early initializers très peu lisible et potentiellement source d'erreur...

A+,
- Sylvain
Je trouve les early initializers pas assez puissants
J'avais parlé avec Martin Odersky et une personne est sensée en ce moment même s'occuper d'ajouter les paramètres aux traits, puis il veulent le support pour le deep mixin composition et enfin les classes virtuelles (laissées à l'abandon depuis 2008). Sur ce dernier point je pourrai surement vous en dire plus quand nous y seront, car je devrais y participer, pour le reste, j'attends aussi avec impatience
__________________
"Ikea / furnishing = OSGi / software : They allow to have very modular things, but trying to put them together generally drives you crazy"
-- Mario Fusco

Pour vos développements Java : apprenez à utiliser la javadoc
George7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h52.


 
 
 
 
Partenaires

Hébergement Web