2009-10-26 6 views
5

Je suis au courant de this question, mais le demandeur semble avoir été contenu avec une réponse à une autre question (comment surcharger le constructeur)Comment appeler des méthodes de constructeur en F #

J'ai une classe quel type de agit comme un memoizer avancé autour d'une classe mutable, pour que je puisse le traiter comme immuable de l'extérieur:

type Wrapper(args) = 
    let tool = new MutableTool() 
    tool.Init(args) //<--"Unexpected identifier in definition" 

    let lookupTable = //create lookup using tool here 
    member this.Lookup(s) = //callers use lookupTable here 

Je ne peux pas travailler comment appeler la méthode Init sur « outil ». Qu'est-ce que je rate?

Répondre

8

IIRC, le mot-clé do pourrait fonctionner ici:

type Wrapper(args) = 
    let tool = new MutableTool() 
    do tool.Init(args) 

    let lookupTable = //create lookup using tool here 
    member this.Lookup(s) = //callers use lookupTable here 

Je ne suis pas sûr de ce que vous vouliez dire à la dernière ligne de code, donc je l'ai laissé comme vous l'avez écrit ...

+0

Fini les gribouillis rouges, merci! – Benjol

5

Vous avez besoin de "faire":

type Foo(args) = 
    let x = new Whatever() 
    do x.Bar() 

    member .... 
Questions connexes