himekami
himekami

Reputation: 1459

What does it mean by the use of brackets in this code

I have a code snippet here but i don't understand the use of "new (code)" in it.

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

Specifically why the need to enclose the "code" variable inside brackets.

Upvotes: 3

Views: 204

Answers (1)

p.s.w.g
p.s.w.g

Reputation: 149068

That's a constructor. From MSDN: Classes (F#) (see section 'Constructors'):

You can add additional constructors by using the new keyword to add a member, as follows:

new (argument-list) = constructor-body

In your example, the Product type has one default constructor which accepts code and price, and one additional constructor that takes only code and applies the default constructor with 0.0 for price. In this case, the parentheses around code are not strictly required, and the code would compile just the same without it, although it would be required if you want constructor that takes zero parameters or more than one parameter.

The equivalent C# would be something like this:

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; } }
}

Upvotes: 5

Related Questions