如何将一个对象声明到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

我在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 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 }