如何将一个对象声明到F#上的另一个类中?
我在F#方面完全是新手,我正在尝试创建一个包含其他类的另一个实例的对象。对我来说,在C语言中这很容易,但在F语言中,我很难理解它 这是我的密码如何将一个对象声明到F#上的另一个类中?,f#,F#,我在F#方面完全是新手,我正在尝试创建一个包含其他类的另一个实例的对象。对我来说,在C语言中这很容易,但在F语言中,我很难理解它 这是我的密码 module Owe type Owe= class val Name: string val Amount: float new (name, amount) as this = { Name = name Amount = amount } end 这是我想使用Owe对象安装的类…。但是,我不能为欠债属性开发票 module
module Owe
type Owe= class
val Name: string
val Amount: float
new (name, amount) as this =
{
Name = name
Amount = amount
}
end
这是我想使用Owe对象安装的类…。但是,我不能为欠债属性开发票
module Roomate
type Roomate = class
val Name : string
val Owe: module.Owe //Error!
new(name, owe) as this =
{
Name = name
Owe = owe
}
end
我真的很感激任何建议或解决方案
提前谢谢
Emma。您可能会收到错误,因为
module.Owe
不是从其他模块引用类型的正确方法。此处不需要模块
关键字-只需提供模块名和类名,如
所示。在您的情况下,模块名和类名都是Owe
,因此您可以编写Owe.Owe
另一件需要记住的事情是,在F#中,文件的顺序很重要。这意味着您只能引用项目中较早出现的文件中的类
最后,我还要补充一点,在F#中,在一个文件(和一个模块)中声明多个类型是很常见的,因此您不需要将定义移动到单独的文件中。我还建议使用lightweitght语法来声明使用隐式构造函数的类:
type Owe(name:string, amount:float) =
member x.Name = name
member x.Amount = amount
type Roomate(name:string, owe:Owe) =
member x.Name = name
member x.Owe = owe
尽管在这种情况下,您可能根本不需要类,也可能只需要使用记录:
type Owe = { Name:string; Amount:float }
type Roomate = { Name:string; Owe:Owe }