如何在f#构造函数中声明类型别名? 类型实体= 抽象成员newEntity:Entity 抽象成员clearEntity:Entity 抽象成员:实体 抽象成员loadData:实体 抽象成员saveData:Entity->unit 抽象成员删除数据:实体->单位

如何在f#构造函数中声明类型别名? 类型实体= 抽象成员newEntity:Entity 抽象成员clearEntity:Entity 抽象成员:实体 抽象成员loadData:实体 抽象成员saveData:Entity->unit 抽象成员删除数据:实体->单位,f#,F#,有没有办法避免重复写实体字 类型实体= 类型T=实体 抽象成员newEntity:T 抽象成员clearEntity:T 抽象成员:T 抽象成员loadData:T 抽象成员saveData:T->unit 抽象成员deleteData:T->unit 我想要一个这样的实现,Scala应该能够做到这一点。你不能将一个类型声明放在另一个类型声明中。您可以做的是进行相互递归的类型声明: type Entity = abstract member newEntity: T abstr

有没有办法避免重复写实体字

类型实体=
类型T=实体
抽象成员newEntity:T
抽象成员clearEntity:T
抽象成员:T
抽象成员loadData:T
抽象成员saveData:T->unit
抽象成员deleteData:T->unit

我想要一个这样的实现,Scala应该能够做到这一点。

你不能将一个类型声明放在另一个类型声明中。您可以做的是进行相互递归的类型声明:

type Entity =
    abstract member newEntity: T
    abstract member clearEntity : T
    abstract member lastEntity : T
    abstract member loadData: T
    abstract member saveData: T -> unit
    abstract member deleteData: T -> unit

and T = Entity

只是记录在案——这不是一种非常惯用的F#写作方式。看起来您正试图以某种方式来实现某些东西,有人会使用OCaml模块系统来实现。F#是FP和OO的混合语言,因此如果您需要这种可扩展性,OO习惯用法可能会做得更好。(当然,从你的合成示例很难说,但对我来说,它看起来不像很好的F代码…)。