Précédent   Forum du club des développeurs et IT Pro > Autres langages > Langages fonctionnels > F#
F# Forum d'entraide sur la programmation en langage fonctionnel F#
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 07/08/2009, 09h10   #1
Herwin78800
Membre habitué
 
Inscription : novembre 2006
Messages : 79
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : novembre 2006
Messages : 79
Points : 129
Points : 129
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 :
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.
Herwin78800 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2009, 22h10   #2
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 962
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 962
Points : 1 148
Points : 1 148
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 :
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 :
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
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2009, 22h08   #3
Herwin78800
Membre habitué
 
Inscription : novembre 2006
Messages : 79
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : novembre 2006
Messages : 79
Points : 129
Points : 129
Par défaut Merci

Merci pour ta réponse.
Grâce à cela j'ai pu débugger mon appli.
@+,

Hervé
Herwin78800 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 19h45.


 
 
 
 
Partenaires

Hébergement Web