【问题标题】:How do I declare circular dependant abstract Classes in F#如何在 F# 中声明循环依赖抽象类
【发布时间】:2012-05-06 04:48:43
【问题描述】:

考虑两个抽象类 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 属性的提示

那么如何声明循环定义的抽象类呢?

【问题讨论】:

    标签: .net f# abstract-class circular-dependency circular-reference


    【解决方案1】:

    将属性放在'and'关键字之后:

    [<AbstractClass>]
    type alpha () =
        abstract member foo : beta -> beta
    
    and [<AbstractClass>]  beta () =
        abstract member bar : alpha
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-17
      • 2019-03-09
      • 2014-02-26
      • 2019-12-04
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多