Methods F#-调用方法并在构造函数中赋值给属性
在F#中,我试图编写一个类,该类具有一个构造函数,该构造函数调用一个方法并将返回值赋给一个属性。目前我无法编译它。这是我的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
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"