声明但不定义 F# 类

Declaring, but not defining F# classes

有没有办法在 F# 中声明一个 class,但不像在 C# 或 C++ 或 Java 或几乎任何其他语言中那样定义它,这样我们就可以避免使用和关键字?我有两个相当大的 classes 相互引用,我不想像这样将它们放在同一个文件中:

type Type1 =
    // definitions

and Type2 =
    //definitions

F# 并没有使循环引用比这更容易。我对你关于 C# 和 Java 允许你 "declare but not define" a class 的说法感到有点困惑;这些语言没有像 C++ 那样的前向声明的概念,而 C++ 有这个概念的唯一原因是支持其 header/translation 基于单元的编译模型,谢天谢地,C# 和 Java 没有。

总之。为了更进一步,我建议您阅读 Cyclic dependencies are evil 并可能为您的 2 class 分解出一个通用的顶级类型,这样它们就不需要相互引用了。 F# 允许循环引用,但尽量不要违背该语言。