Как вызывать методы из конструктора в F#

Мне известно об этом вопросе, но автор вопроса, похоже, удовлетворился ответом на другой вопрос (как перегрузить конструктор)

У меня есть класс, который действует как продвинутый мемоизатор вокруг изменяемого класса, так что я могу рассматривать его как неизменяемый извне:

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

Я не могу понять, как вызвать метод Init для «инструмента». Что мне не хватает?


person Benjol    schedule 26.10.2009    source источник


Ответы (2)


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

Я не уверен, что вы имели в виду с последней строкой кода, поэтому я оставил его, как вы его написали...

person Mark Seemann    schedule 26.10.2009

Вам нужно «сделать»:

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

  member ....
person MichaelGG    schedule 26.10.2009