Mark Pearl

Okay, some basic examples of overloading in F#

Overloading Constructors

Assume you have a F# object called person…

type Person (firstname : string, lastname : string) =    
    member v.Fullname = firstname + " " + lastname    

This only has one constructor. To add additional constructors to the object by explicitly declaring them using the method member new.

type Person (firstname : string, lastname : string) = 
    new () = Person("Unknown", "Unknown")
    member v.Fullname = firstname + " " + lastname    

In the code above I added another constructor to the Person object that takes no parameters and then refers to the primary constructor. Using the same technique in the code below I have created another constructor that accepts only the firstname as a parameter to create an object.

type Person (firstname : string, lastname : string) = 
    new () = Person("Unknown", "Unknown")
    new (firstname : string) = Person(firstname, "Unknown")
    member v.Fullname = firstname + " " + lastname    

Overloading Operators

So, you can overload operators of objects in F# as well… let’s look at example code…

type Person(name : string) = 
    member v.name = name        
    static member (+) (person1 : Person , person2 : Person) =
        Person(person1.name + " " + person2.name)

In the code above we have overloaded the “+” operator. Whenever we add to Person objects together, it will now create a new object with the combined names…



blog comments powered by Disqus

Want to get my personal insights on what I learn as I learn it? Subscribe now!


/