Methods F#-调用方法并在构造函数中赋值给属性

Methods F#-调用方法并在构造函数中赋值给属性,methods,constructor,properties,f#,Methods,Constructor,Properties,F#,在F#中,我试图编写一个类,该类具有一个构造函数,该构造函数调用一个方法并将返回值赋给一个属性。目前我无法编译它。这是我的F#代码: Aaron给出了一个很好的答案,但这里有一个替代方案: type MyClass() = let genString () = "this is a string" member val public MyProperty = genString() with get, set member public this.GenerateStr

在F#中,我试图编写一个类,该类具有一个构造函数,该构造函数调用一个方法并将返回值赋给一个属性。目前我无法编译它。这是我的F#代码:


Aaron给出了一个很好的答案,但这里有一个替代方案:

type MyClass() = 
    let genString () = "this is a string"
    member val public MyProperty = genString() with get, set
    member public this.GenerateString = genString

出现编译器错误是因为您需要定义对
MyClass
的当前实例的引用,以便在构造函数中使用。但是,即使这样做,您也会发现代码在运行时失败:

type MyClass() as self = 
    do
        self.MyProperty <- self.GenerateString()

    member val public MyProperty = ""
        with get, set

    member public this.GenerateString() = 
        "this is a string"
type MyClass() = 
    let genString () = "this is a string"
    member val public MyProperty = genString() with get, set
    member public this.GenerateString = genString
type MyClass() as self = 
    do
        self.MyProperty <- self.GenerateString()

    member val public MyProperty = ""
        with get, set

    member public this.GenerateString() = 
        "this is a string"
type MyClass() as self = 

    let mutable value = ""
    do value <- self.GenerateString()

    member public this.MyProperty
        with get() = value
        and set (v) = value <- v

    member public this.GenerateString() = 
        "this is a string"