2013-04-23 37 views
3

我是很新,F#,所以我不太清楚我在做什麼錯在這裏 這裏就是我想要做的事:F#我如何從一個函數訪問成員

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

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

我不能那樣做,因爲Visual Studio告訴我「這個」沒有被定義爲 所以我該怎麼做? 我是否缺少F#的某些明顯特徵?

我試圖使我的所有成員函數來代替......但後來我不得不讓他們變得可見重新排序的所有功能,那麼它仍然是行不通的

等什麼呢?

回答

7

您需要插入自我標識符。出於某些性能原因,這不是默認情況下完成的。

以下工作:

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

    member this.MyMember() :unit =() 
+0

奏效aight感謝! :D – 2013-04-23 10:46:36

+2

「出於某些性能原因,這不是默認完成的」......這很有趣,您能否詳細說明或提供解釋原因的參考? – Asik 2013-04-23 13:34:22

+0

@Asik - 我不知道爲什麼,但這裏是一些相關的代碼,並警告它產生'type t()as self = class end ;; stdin(2,13):警告FS1183:遞歸對象引用'self'未被使用。遞歸對象引用的存在會將運行時初始化檢查添加到此類派生類型中的成員。考慮刪除這個遞歸對象引用 – 2013-04-23 21:47:34

相關問題