所以我有这个简单的代码,我试图找出 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 是一个字符串,我做错了什么?
您的类定义是正确的,但是在使用它们时有两个小问题:
创建实例时,您需要将参数作为元组传递给构造函数,
即您需要说A("one", "two")而不是A "one" "two"
调用方法时,需要指定空参数列表即 test.tX()
类的正确使用A如下所示:
let test = A("first", "second")
let xxx = "" + test.tX()
Run Code Online (Sandbox Code Playgroud)