我有一个令人烦恼的错误。
type Animal =
abstract member Name : string
type Dog (name : string) =
interface Animal with
member this.Name : string =
name
let pluto = new Dog("Pluto")
let name = pluto.Name
最后一行,特别是“名称”会生成一个编译器错误,指出“未定义字段、构造函数或成员‘名称’”。
我使用的解决方法是写
let name = (pluto :> Animal).Name
然而,这非常烦人并且会产生很多视觉噪音。有没有人可以在 F# 中做些什么来解析 Name 而无需明确告诉编译器 Name 是 Animal 类型的派生成员?