tags:

views:

153

answers:

2

I'm aware of this question, but the asker seems to have been content with an answer to another question (how to overload the constructor)

I have a class which kind of acts as an advanced memoizer around a mutable class, so that I can treat it as immutable from outside:

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

I can't work out how to invoke the Init method on "tool". What am I missing?

+3  A: 

IIRC, the do keyword might work here:

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

I'm not sure what you meant with the last line of code, so I left it as you wrote it...

Mark Seemann
No more red squiggles, thank you!
Benjol
+3  A: 

You need "do":

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

  member ....
MichaelGG