F# Как получить доступ к члену из функции

Я новичок в F #, поэтому я не совсем уверен, что я делаю неправильно, вот что я пытаюсь сделать:

type MyClass() =
    let someVar = this.MyMember()

    member this.MyMember() :unit = 
        // insert some code here

Я не могу этого сделать, потому что Visual Studio сообщает мне, что «это» не определено, так что мне делать? мне не хватает какой-то очевидной функции F # или что-то в этом роде?

Вместо этого я попытался сделать все свои функции-члены... но тогда мне пришлось бы переупорядочить все функции, чтобы они стали видимыми, и тогда это все равно не сработало бы.

так что делать?


person Electric Coffee    schedule 23.04.2013    source источник


Ответы (1)


Вам нужно вставить самоидентификацию. Это не делается по умолчанию из-за некоторых соображений производительности.

Следующие работы:

type MyClass() as this =
    let someVar = this.MyMember()

    member this.MyMember() :unit = ()
person John Palmer    schedule 23.04.2013
comment
Это не делается по умолчанию из-за некоторых соображений производительности... это интересно, не могли бы вы уточнить или предоставить ссылку, объясняющую, почему? - person Asik; 23.04.2013
comment
@Asik - я не знаю почему, но вот соответствующий код и предупреждение, которое он генерирует type t() as self = class end;; stdin(2,13): warning FS1183: The recursive object reference 'self' is unused. The presence of a recursive object reference adds runtime initialization checks to members in this and derived types. Consider removing this recursive object reference. - person John Palmer; 24.04.2013