Fungsi Swift Overloading (Dengan Contoh)

Pada artikel ini, Anda akan belajar tentang function overloading, kapan kita membutuhkan function overloading dan bagaimana cara melakukan overload dengan contoh-contoh.

Dua atau lebih fungsi yang memiliki nama yang sama tetapi argumen yang berbeda dikenal sebagai fungsi yang kelebihan beban.

Mengapa kita membutuhkan function overloading?

Bayangkan Anda sedang mengembangkan game penembak di mana pemain dapat menyerang musuhnya menggunakan pisau, bilah, dan pistol. Solusi Anda untuk fungsionalitas serangan mungkin mendefinisikan tindakan menjadi fungsi sebagai:

 func attack() ( //… print("Attacking with Knife") ) func attack() ( //… print("Attacking with Blade") ) func attack() ( //… print("Attacking with Gun") ) 

Tetapi ketika Anda mencoba menjalankan program di atas, Anda akan mendapatkan kesalahan waktu kompilasi di Swift seperti 'attack ()' yang sebelumnya dideklarasikan di sini . Namun, solusi lain mungkin menetapkan nama fungsi yang berbeda untuk fungsionalitas tertentu sebagai:

 struct Knife ( ) struct Gun ( ) struct Blade ( ) func attackUsingKnife(weapon:Knife) ( //… print("Attacking with Knife") ) func attackUsingBlade(weapon:Blade) ( //… print("Attacking with Blade") ) func attackUsingGun(weapon:Gun) ( //… print("Attacking with Gun") ) 

Jangan khawatir jika Anda tidak tahu apa struct itu. Untuk saat ini anggap saja sebagai sesuatu yang menciptakan objek fisik dalam pemrograman, jadi Anda membuat pisau, pistol, dan bilah. Jika Anda ingin tahu lebih banyak, lihat Swift Struct. Jika tidak, kita akan kembali ke bab selanjutnya.

Satu-satunya masalah dengan solusi ini adalah Anda perlu mengingat nama fungsi untuk memanggil aksi serangan tertentu. Juga saat level naik, pemain mungkin memiliki fitur tambahan untuk menyerang menggunakan bom, granat, senapan, dll.

Membuat fungsi dengan nama yang berbeda memakan waktu dan meningkatkan overhead mengingat nama fungsi untuk memanggilnya. Secara keseluruhan, ini tidak intuitif.

Akan jauh lebih baik jika Anda dapat membuat fungsi yang berbeda dengan nama yang sama tetapi penerapan yang berbeda untuk setiap senjata. Dengan cara ini, mengingat satu nama fungsi sudah cukup dan Anda tidak perlu khawatir tentang nama fungsi untuk senjata lainnya.

Apa itu function overloading?

Proses yang baru saja kami jelaskan dikenal sebagai overloading fungsi. Menurut definisi, proses membuat dua atau lebih dari dua fungsi dengan nama yang sama tetapi memiliki jumlah atau jenis parameter yang berbeda yang dilewatkan dikenal sebagai overloading fungsi.

Mari kita lihat ini pada contoh di bawah ini:

Contoh 1: Fungsi Overloading

 struct Knife ( ) struct Gun ( ) struct Blade ( ) func attack(with weapon:Knife) ( print("Attacking with Knife") ) func attack(with weapon:Gun) ( print("Attacking with Gun") ) func attack(with weapon:Blade) ( print("Attacking with Blade") ) attack(with: Gun()) attack(with: Blade()) attack(with: Knife()) 

Ketika Anda menjalankan program di atas, hasilnya adalah:

 Menyerang dengan Senjata Menyerang dengan Pisau Menyerang dengan Pisau 

Dalam program di atas, kami telah membuat tiga fungsi berbeda dengan nama yang sama attack. Namun, ini menerima jenis parameter yang berbeda. Cara ini cukup mengingat attacknama untuk memanggil fungsi tersebut.

  • Panggilan tersebut attack(with: Gun())memicu pernyataan di dalam fungsi func attack(with weapon:Gun).
  • Panggilan tersebut attack(with: Blade())memicu pernyataan di dalam fungsi func attack(with weapon:Blade).
  • attack(with: Knife())Pernyataan panggilan di dalam fungsi func attack(with weapon:Knife).

Contoh 2: Fungsi Overloading berdasarkan jenis parameter yang berbeda

 func output(x:Int) ( print("The int value is (x)") ) func output(x:String) ( print("The string value is (x)") ) output(x: 2) output(x: "Swift") 

Ketika Anda menjalankan program di atas, hasilnya adalah:

 Nilai int adalah 2 Nilai string adalah Swift 

Dalam program di atas, kami memiliki dua fungsi dengan nama yang output()sama dan jumlah parameter yang sama. Namun, output()fungsi pertama menggunakan integer sebagai parameter, dan output()fungsi kedua mengambil Stringparameter.

Mirip dengan Contoh 1,

  • panggilan untuk output(x: 2)memicu pernyataan di dalam fungsi func output(x:Int)dan
  • panggilan untuk output(x: "Swift")memicu pernyataan di dalam fungsi func output(x:String).

Contoh 3: Fungsi Overloading berdasarkan jumlah parameter yang berbeda

 func output() ( print("Good Morning!") ) func output(text:String) ( print(text) ) func output(text:String, num:Int) ( print("(text)(num)!") ) output() output(text: "Good Evening!") output(text1: "Good N", num: 8) 

Ketika Anda menjalankan program di atas, hasilnya adalah:

Selamat pagi! Selamat malam! Selamat malam!

Dalam program di atas, fungsi output()telah kelebihan beban berdasarkan jumlah argumen.

Yang pertama output()tidak menggunakan parameter, yang kedua output()menggunakan satu parameter:, Stringdan yang ketiga output()menggunakan dua parameter: Stringdan Int.

Mari kita coba membebani dengan mengubah nama parameter tetapi menjaga label argumen tetap sama seperti:

Contoh 4: Fungsi overloading dengan label argumen yang sama

 func output(value text:String) ( print(text) ) func output(value num:Int) ( print(num) ) output(value: 2) output(value: "Hello") 

Ketika Anda menjalankan program di atas, hasilnya adalah:

 2 Halo

Seperti yang Anda lihat, pada program di atas, Anda dapat menggunakan label argumen yang sama untuk fungsi yang kelebihan beban. Namun, karena kelebihan beban, Anda harus memiliki jumlah parameter yang berbeda atau jenis parameter yang berbeda.

Artikel yang menarik...