Metode Kelebihan & Parameter Default di Delphi

click fraud protection

Fungsi dan prosedur adalah bagian penting dari bahasa Delphi. Dimulai dengan Delphi 4, Delphi memungkinkan kita untuk bekerja dengan fungsi dan prosedur yang mendukung parameter default (membuat parameter opsional), dan mengizinkan dua atau lebih rutin untuk memiliki nama yang identik tetapi beroperasi sebagai sama sekali berbeda rutinitas.

Mari kita lihat bagaimana kelebihan muatan dan parameter default dapat membantu Anda membuat kode lebih baik.

Kelebihan beban

Sederhananya, overloading adalah mendeklarasikan lebih dari satu rutin dengan nama yang sama. Overloading memungkinkan kita untuk memiliki beberapa rutinitas yang berbagi nama yang sama, tetapi dengan jumlah parameter dan tipe yang berbeda.

Sebagai contoh, mari kita perhatikan dua fungsi berikut:

{Rutinitas berlebih harus dideklarasikan. dengan arahan yang berlebihan}fungsi SumAsStr (a, b: integer): tali; kelebihan beban; mulai Hasil: = IntToStr (a + b); akhir; fungsi SumAsStr (a, b: extended; Digit: integer): tali; kelebihan beban; mulai Hasil: = FloatToStrF (a + b, ffFixed, 18, Digit); akhir; 
instagram viewer

Deklarasi ini membuat dua fungsi, keduanya disebut SumAsStr, yang mengambil jumlah parameter yang berbeda dan memiliki dua tipe berbeda. Ketika kita memanggil rutin yang kelebihan beban, kompiler harus dapat mengetahui rutin mana yang ingin kita panggil.

Misalnya, SumAsStr (6, 3) memanggil fungsi SumAsStr pertama, karena argumennya bernilai integer.

catatan: Delphi akan membantu Anda memilih implementasi yang tepat dengan bantuan penyelesaian kode dan wawasan kode.

Di sisi lain, pertimbangkan jika kami mencoba memanggil fungsi SumAsStr sebagai berikut:

 SomeString: = SumAsStr (6.0,3.0) 

Kami akan mendapatkan kesalahan yang berbunyi: "tidak ada versi 'SumAsStr' yang kelebihan beban yang dapat dipanggil dengan argumen ini."Ini berarti bahwa kita juga harus memasukkan parameter Digit yang digunakan untuk menentukan jumlah digit setelah titik desimal.

catatan: Hanya ada satu aturan ketika menulis rutin yang kelebihan beban, dan itu adalah bahwa kelebihan rutin harus berbeda dalam setidaknya satu jenis parameter. Jenis kembali, sebaliknya, tidak dapat digunakan untuk membedakan antara dua rutinitas.

Dua Unit - Satu Rutin

Katakanlah kita memiliki satu rutin di unit A, dan unit B menggunakan unit A, tetapi nyatakan rutin dengan nama yang sama. Deklarasi di unit B tidak memerlukan arahan yang berlebihan - kita harus menggunakan nama unit A untuk membuat panggilan memenuhi syarat untuk versi rutin A dari unit B.

Pertimbangkan sesuatu seperti ini:

satuan B;... menggunakan SEBUAH;... prosedur Nama Routine; mulai Hasil: = A.RoutineName; akhir; 

Alternatif untuk menggunakan rutin yang kelebihan beban adalah dengan menggunakan parameter default, yang biasanya menghasilkan lebih sedikit kode untuk ditulis dan dipelihara.

Parameter Default / Opsional

Untuk menyederhanakan beberapa pernyataan, kita dapat memberikan nilai default untuk parameter fungsi atau prosedur, dan kita dapat memanggil rutin dengan atau tanpa parameter, menjadikannya opsional. Untuk memberikan nilai default, akhiri deklarasi parameter dengan simbol sama (=) diikuti oleh ekspresi konstan.

Misalnya diberi deklarasi

fungsi SumAsStr (a, b: extended; Digit: integer = 2): tali; 

panggilan fungsi berikut ini setara.

 SumAsStr (6.0, 3.0) 
 SumAsStr (6.0, 3.0, 2) 

catatan: Parameter dengan nilai default harus muncul di akhir daftar parameter, dan harus dilewati oleh nilai atau sebagai const. Parameter referensi (var) tidak dapat memiliki nilai default.

Saat memanggil rutin dengan lebih dari satu parameter default, kami tidak dapat melewati parameter (seperti di VB):

fungsi SkipDefParams (var Sebuah benang; B: integer = 5, C: boolean = Salah): boolean;... // panggilan ini menghasilkan pesan kesalahan
CantBe: = SkipDefParams ('delphi',, Benar); 

Overloading Dengan Parameter Default

Saat menggunakan kelebihan fungsi atau prosedur dan parameter default, jangan memperkenalkan deklarasi rutin yang ambigu.

Pertimbangkan deklarasi berikut:

prosedur DoIt (A: extended; B: integer = 0); kelebihan beban; prosedur DoIt (A: extended); kelebihan beban; 

Panggilan ke prosedur Doit seperti Doit (5.0), tidak dikompilasi. Karena parameter default pada prosedur pertama, pernyataan ini mungkin memanggil kedua prosedur, karena tidak mungkin untuk mengatakan prosedur mana yang harus dipanggil.

instagram story viewer