【发布时间】:2021-06-22 02:16:42
【问题描述】:
如何使用泛型类型签名覆盖抽象方法,并在子类中为其赋予更具体的参数类型?
type Rule() =
abstract Core : 'T -> bool
default _.Core _ = false
type Entity = {
Name: string
State: string
}
type Wisconsin() =
inherit Rule()
override _.Core (entity: Entity) =
entity.State = "WI"
SimpleMemberOverload.fsx(256,22):错误 FS0001:此表达式应具有类型 ''一个' 但这里有类型 '实体'
【问题讨论】:
-
你不能。基类表示该方法接受 any 类型参数。如果您将
Wisconsin作为Rule传递,则调用Corer应该适用于任何类型,而不仅仅是Entity。 -
我注意到错误消息中的文件名SimpleMemberOverload.fsx,我想知道是否存在关于重载和覆盖的混淆。这是两个非常不同的东西。
标签: f#