F#在构造函数中调用成员函数

use*_*285 6 f# constructor initialization member-functions

我正在写一个F#类型,我在初始化时无法弄清楚如何从构造函数引用成员函数.我想我应该使用do绑定,但是do绑定无法理解成员函数.有没有办法解决这个问题?

Pet*_*etr 13

你可以这样做:

type MyClass() as this =   // Note as this

    do this.SayHello()

    member this.SayHello() = 
        do printfn "Hello from constructor!"
Run Code Online (Sandbox Code Playgroud)

但一般来说这不是一个好习惯

  • 假设该方法使用其他类字段或尚未初始化或依赖于某些可能未准备好的额外资源(文件,连接等)的成员.在这种情况下,您将在构造时获得运行时异常.如果考虑到继承,事情可能会变得更糟. (9认同)