考虑两个抽象类alpha和beta:
[<AbstractClass>]
type alpha () =
abstract member foo: beta->beta
[<AbstractClass>]
and beta () = //***
abstract member bar: alpha
如果我尝试编译,我收到错误, 在用* * *表示的行上:
error FS0010: Unexpected keyword 'and' in interaction
如果我写:
[<AbstractClass>]
type alpha () =
abstract member foo: beta->beta
and beta () =
abstract member bar: alpha
然后我得到:
error FS0365: No implementation was given for 'abstract member beta.bar : alpha'
并提示我应该添加AbstractClass属性
那么我如何声明循环定义的抽象类?
答案 0 :(得分:7)
将属性放在'and'关键字后面:
[<AbstractClass>]
type alpha () =
abstract member foo : beta -> beta
and [<AbstractClass>] beta () =
abstract member bar : alpha