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

F# Discussion :

Classe, Constructeur et héritage


Sujet :

F#

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Novembre 2006
    Messages : 79
    Points : 54
    Points
    54
    Par défaut Classe, Constructeur et héritage
    Bonjour,

    Je sais que le F# n'est pas, en principe, conçu pour la poo, mais je convertis actuellement un programme c# en f#, donc dans un premier temps, je convertis mot à mot.

    Et là j'ai apparemment un soucis de syntaxe avec un constructeur primaire (mot clé do) pour ma classe ListingMonitoring, qui est une liste de listes et donc hérite de List<List<string>>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    open System
    open System.Collections.Generic
     
        type ListingMonitoring(tabNoms : List<string>) = inherit List<List<string>> 
     
            //constructeur primaire
            do self.Add(tabNoms)
     
            //constructeur secondaire    
            new(tabNoms: List<string>, tabIP : List<string>) =
                self.Add(tabNoms)
                self.Add(tabIP)  
     
             //METHODES  
            member Find(numAgregat: int, numElement : int) =
                maListe : List<string>  <- this[numAgregat]
                maListe[numElement]
     
     
            member Add(numAgregat:int, elementAajouter:string)  =
                self[numAgregat].Add(elementAajouter)
     
            member _indiquerTaille() =
                  self[0].Count
    Visual Studio me signale une erreur au niveau du do :
    "Unexepected Keyword 'do" in implementation file"

    Quelqu'un aurait une idée ?
    Je me demande si ce n'est pas ma clause d'héritage qui n'est pas correctement écrite.

    Merci

    PS : Dans un second temps, si j'ai le temps j'utiliserai le paradigme de la programmation fonctionnelle plutôt que des classes, sauf pour l'interface.

  2. #2
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Salut !

    Il y a pas mal de problèmes de syntaxe dans ton code, je te conseille de prendre exemple sur la doc MSDN (ou ailleurs) :
    http://msdn.microsoft.com/en-us/libr...5(VS.100).aspx
    http://msdn.microsoft.com/en-us/libr...5(VS.100).aspx

    Le message d'erreur que tu as n'est pas simple à comprendre, car il est dû à une erreur d'indentation. La ligne inherit devrait être alignée avec les méthodes et le constructeur. Pour satisfaire le compilateur, il faut soit la mettre à la ligne, soit indenter tout le reste (bof). Tu obtiendrais le même message d'erreur si tu écrivais un if de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if true then printfn "a"
      printfn "b"
    Pour me familariser un peu avec l'objet de F# (j'utilise peu l'héritage), j'ai voulu faire compiler ton code. Voici le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    type ListingMonitoring(tabNoms : List<string>, tabIP : List<string>) as self =
            inherit List<List<string>>()
     
            //constructeur primaire
            do self.Add(tabNoms)
            do self.Add(tabIP)
     
            //constructeur secondaire
            new(tabNoms: List<string>) =
                ListingMonitoring(tabNoms, List())
     
             //METHODES
            member self.Find(numAgregat: int, numElement : int) =
                let maListe = self.[numAgregat]
                maListe.[numElement]
     
            member self.Add(numAgregat:int, elementAajouter:string)  =
                self.[numAgregat].Add(elementAajouter)
     
            member self._indiquerTaille() =
                self.[0].Count

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Novembre 2006
    Messages : 79
    Points : 54
    Points
    54
    Par défaut Merci
    Merci pour ta réponse.
    Grâce à cela j'ai pu débugger mon appli.
    @+,

    Hervé

Discussions similaires

  1. problème (héritage || class || constructeur )?
    Par crazy_inf dans le forum C++
    Réponses: 3
    Dernier message: 29/06/2008, 22h07
  2. Foncteur, classes templates et héritage
    Par Floréal dans le forum C++
    Réponses: 8
    Dernier message: 17/06/2007, 21h56
  3. Initialiser tableau class constructeur
    Par dédé dans le forum C++
    Réponses: 3
    Dernier message: 21/11/2006, 13h43
  4. Constructeur et héritage.
    Par Pragmateek dans le forum C++
    Réponses: 3
    Dernier message: 15/08/2006, 21h01
  5. [POO] Constructeur et héritage
    Par LDDL dans le forum Langage
    Réponses: 3
    Dernier message: 23/05/2006, 21h44

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