我这里有一段代码片段,但我不理解其中使用“new(code)”。
type Product (code:string, price:float) =
let isFree = price=0.0
new (code) = Product(code,0.0)
member this.Code = code
member this.IsFree = isFree
具体为什么需要在括号内包含“code”变量。
答案 0 :(得分:5)
那是一个构造函数。来自MSDN: Classes (F#)(请参阅'构造函数'):
您可以使用new关键字添加其他构造函数以添加成员,如下所示:
new (argument-list) = constructor-body
在您的示例中,Product
类型有一个默认构造函数,它接受code
和price
,另一个构造函数只接受code
并应用默认构造函数0.0
price
。在这种情况下,code
周围的括号不是严格要求的,如果没有它,代码将编译相同,但如果您希望构造函数采用零参数或多个参数,则需要它。
等效的C#将是这样的:
public class Product
{
private string code;
private bool isFree;
public Product(string code, double price) {
this.code = code;
this.isFree = price == 0.0;
}
public Product(string code) : this(code, 0.0) { }
public string Code { get { return this.code; } }
public float IsFree { get { return this.isFree; } }
}