如何从F#中的构造函数调用方法

Ben*_*jol 5 f# constructor

我知道这个问题,但提问者似乎满足于另一个问题的答案(如何重载构造函数)

我有一个类作为一个可变类的高级memoizer,所以我可以把它视为外部的不可变:

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
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何在"工具"上调用Init方法.我错过了什么?

Mar*_*ann 8

IIRC,do关键字可能在这里工作:

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
Run Code Online (Sandbox Code Playgroud)

我不确定你对最后一行代码的含义是什么,所以当你写它时我就离开了它...


Mic*_*lGG 5

你需要"做":

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

  member ....
Run Code Online (Sandbox Code Playgroud)