IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scala Java Discussion :

[Article] Traits Scala et décorateurs [Tutoriel]


Sujet :

Scala Java

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 36
    Points : 163
    Points
    163
    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

  2. #2
    Membre éclairé

    Inscrit en
    Juillet 2008
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 232
    Points : 837
    Points
    837
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    super.impute(credit, "** Forfait **")
    Cela n'est pas une instruction de constructeur?

    (note: dans mon langage dodo les traits/mixins s'appellent "qualifier")

  3. #3
    Invité
    Invité(e)
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    trait Test(val test: String)
    par exemple.

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 36
    Points : 163
    Points
    163
    Par défaut
    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

  5. #5
    Invité
    Invité(e)
    Par défaut
    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

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo