F # - Operator Overloading

Anda dapat mendefinisikan ulang atau membebani sebagian besar operator bawaan yang tersedia di F #. Dengan demikian seorang programmer dapat menggunakan operator dengan tipe yang ditentukan pengguna juga.

Operator adalah fungsi dengan nama khusus, diapit tanda kurung. Mereka harus didefinisikan sebagai anggota kelas statis. Seperti fungsi lainnya, operator yang kelebihan beban memiliki tipe kembalian dan daftar parameter.

Contoh berikut, menunjukkan operator + pada bilangan kompleks -

//overloading + operator
static member (+) (a : Complex, b: Complex) =
Complex(a.x + b.x, a.y + b.y)

Fungsi di atas mengimplementasikan operator penambahan (+) untuk kompleks kelas yang ditentukan pengguna. Ia menambahkan atribut dari dua objek dan mengembalikan objek Kompleks yang dihasilkan.

Penerapan Operator Overloading

Program berikut menunjukkan implementasi lengkap -

//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())

Ketika Anda mengkompilasi dan menjalankan program, itu menghasilkan output berikut -

7 5
4.2 3.1
11.2 8.1
2.8 1.9