F # - Operatör Aşırı Yüklemesi
F # 'da bulunan yerleşik operatörlerin çoğunu yeniden tanımlayabilir veya aşırı yükleyebilirsiniz. Böylece bir programcı, kullanıcı tanımlı tiplere sahip operatörleri de kullanabilir.
Operatörler, parantez içine alınmış özel adlara sahip işlevlerdir. Statik sınıf üyeleri olarak tanımlanmaları gerekir. Diğer herhangi bir işlev gibi, aşırı yüklenmiş bir operatörün bir dönüş türü ve bir parametre listesi vardır.
Aşağıdaki örnek, karmaşık sayılarda bir + işlecini gösterir -
//overloading + operator
static member (+) (a : Complex, b: Complex) =
Complex(a.x + b.x, a.y + b.y)
Yukarıdaki işlev, karmaşık bir kullanıcı tanımlı sınıf için toplama işlecini (+) uygular. İki nesnenin niteliklerini ekler ve sonuçta ortaya çıkan Karmaşık nesneyi döndürür.
Operatör Aşırı Yüklemesinin Uygulanması
Aşağıdaki program tam uygulamayı gösterir -
//implementing a complex class with +, and - operators
//overloaded
type Complex(x: float, y : float) =
member this.x = x
member this.y = y
//overloading + operator
static member (+) (a : Complex, b: Complex) =
Complex(a.x + b.x, a.y + b.y)
//overloading - operator
static member (-) (a : Complex, b: Complex) =
Complex(a.x - b.x, a.y - b.y)
// overriding the ToString method
override this.ToString() =
this.x.ToString() + " " + this.y.ToString()
//Creating two complex numbers
let c1 = Complex(7.0, 5.0)
let c2 = Complex(4.2, 3.1)
// addition and subtraction using the
//overloaded operators
let c3 = c1 + c2
let c4 = c1 - c2
//printing the complex numbers
printfn "%s" (c1.ToString())
printfn "%s" (c2.ToString())
printfn "%s" (c3.ToString())
printfn "%s" (c4.ToString())
Programı derleyip çalıştırdığınızda, aşağıdaki çıktıyı verir -
7 5
4.2 3.1
11.2 8.1
2.8 1.9