为什么应该返回字符串的类型方法返回一个“单位 -> 字符串”,以及如何解决它?

1 string methods f# class

所以我有这个简单的代码,我试图找出 F# 中的类和继承:

type Mkp() =
    abstract tX : unit -> string
    default this.tX() = ""

type A(n : string, v : string) =
    inherit Mkp()
    member this.n = n
    member this.v = v
    override this.tX() = sprintf "%s = \"%s\" " this.n this.v

let test = A "first" "second"
let xxx = "" + test.tX
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误:'string' 类型与'unit -> string' 类型不匹配,但我希望 test.tX 是一个字符串,我做错了什么?

Tom*_*cek 6

您的类定义是正确的,但是在使用它们时有两个小问题:

  • 创建实例时,您需要将参数作为元组传递给构造函数,
    即您需要说A("one", "two")而不是A "one" "two"

  • 调用方法时,需要指定空参数列表即 test.tX()

类的正确使用A如下所示:

let test = A("first", "second")
let xxx = "" + test.tX()
Run Code Online (Sandbox Code Playgroud)