Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: BenjolОтветов: 2

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

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

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 для "инструмента". Что мне не хватает?

constructor

Ответы

Ответ 1 · рейтинг 8 · Mark Seemann

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

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

Ответ 2 · рейтинг 5 · MichaelGG

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

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

  member ....

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы