Как вызвать методы из конструктора в F # - PullRequest
5 голосов
/ 26 октября 2009

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

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

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

Ответы [ 2 ]

8 голосов
/ 26 октября 2009

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

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

5 голосов
/ 26 октября 2009

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

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

  member ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...