Last Updated on April 29, 2023 by
Bahasa pemrograman Swift telah menjadi salah satu pilihan utama bagi para pengembang aplikasi, khususnya di ekosistem Apple. Dengan fitur-fiturnya yang kuat dan sintaks yang mudah dibaca, Swift memungkinkan pengembang untuk menulis kode yang efisien, andal, dan modular. Salah satu konsep penting dalam Swift yang perlu dipahami adalah nested functions, di mana sebuah fungsi didefinisikan di dalam fungsi lain.
Dalam seri belajar Swift kali ini, kita telah membahas berbagai aspek dari nested functions, termasuk fungsi tanpa tipe pengembalian, fungsi dengan parameter, fungsi dengan tipe pengembalian serta contoh penggunaanya. Yuk simak ulasannya dibawah ini!
Table of Contents
Nested Functions Swift
Dalam Swift, ketika suatu fungsi berada di dalam fungsi lain, jenis fungsi tersebut dikenal sebagai Nested Functions. Fungsi bertingkat tersembunyi di dalam fungsi luar dan tidak dapat diakses oleh fungsi di luar jika kita mencoba mengaksesnya, kita akan mendapatkan pesan kesalahan. Mereka hanya dapat dipanggil dan digunakan oleh fungsi yang menyertakan mereka. Berikut contoh sintaks koding untuk fungsi bertingkat:
func myFunction1 { // isi dari myFunction1 func myFunction2 { // isi dari myFunction2 } }
Pada contoh sintaks koding diatas, fungsi myFunction1 adalah sebagai fungsi luar atau outer functions dan fungsi myFunction2 adalah sebagai fungsi dalam atau inner functions.
Nested Functions Tanpa Tipe Pengembalian
Seperti fungsi normal lainnya, nested functions mungkin tidak mengandung tipe pengembalian. Berikut penjelasan mengenai cara kerja fungsi bertingkat tanpa tipe pengembalian. Berikut contoh sintaks koding fungsi bertingkat tanpa tipe pengembalian.
// Program Swift untuk mendemonstrasikan cara kerja // fungsi bertingkat tanpa tipe pengembalian // Fungsi luar yang memiliki fungsi lain // untuk mencetak string func myFunction1() { // Fungsi dalam dengan pernyataan print func myFunction2() { print("Codekey Appkey") } // Memanggil fungsi dalam di dalam // fungsi luar myFunction2() } // Kode pengemudi // Memanggil fungsi luar di luar // fungsi lain myFunction1()
Output dari sintaks diatas:
Codekey Appkey
Pada contoh program diatas, kita memanggil fungsi luar, “myFunction1()” dari luar fungsi luar. Setelah fungsi ini dipanggil, aliran kontrol program masuk ke dalam “myFunction1()” dan mencapai sintaks dimana kita memanggil fungsi, “myFunction2()”. Sekarang, fungsi ini akan dipanggil untuk mencetak string menggunakan fungsi print(). Setelah menjalankan sintaks dibawah ini, aliran kontrol program keluar dari fungsi dalam lalu keluar dari fungsi luar, dan seterusnya.
Nested Functions dengan Parameter
Seperti fungsi pada umumnya, nested functions mungkin mengandung parameter. Berikut penjelasan mengenai cara kerja fungsi bertingkat yang memiliki parameter. Berikut contoh sintaks koding fungsi bertingkat dengan parameter.
// Program Swift untuk mendemonstrasikan cara kerja
// fungsi bertingkat dengan parameter
// Fungsi luar untuk menambahkan dua bilangan bulat
func add(num1: Int, num2: Int)
{
// Fungsi dalam untuk mencetak jumlah yang diinginkan
func printSum(sum: Int)
{
// Pernyataan print
print("Jumlah dari 2 dan 3 adalah :", sum)
}
// Memanggil fungsi dalam di dalam
// fungsi luar
let totalSum = num1 + num2
// Memanggil fungsi dalam
printSum(sum : totalSum)
}
// Kode pengemudi
// Memanggil fungsi luar di luar fungsi
// yang lain
add(num1: 2, num2: 3)
Output dari sintaks diatas:
Jumlah dari 2 dan 3 adalah : 5
Pada program diatasi, kita memanggil fungsi luar “add()” dari luar fungsi luar dengan meneruskan dua parameter num1: 2 dan num2: 3 sebagai parameter. Setelah fungsi ini dipanggil, aliran kontrol program masuk ke dalam fungsi “add()” dan mencapai sintaks di mana kita menghitung jumlah dari dua bilangan bulat. Kemudian sintaks “totalSum” diteruskan ke fungsi dalam yaitu “printSum()” dimana nilai yang diwakili oleh variabel totalSum dicetak menggunakan fungsi print.
Nested Functions dengan Tipe Pengembalian
Selain tidak mengandung tipe pengembalian seperti yang dijelaskan sebelumnya, nested functions juga mungkin mengandung tipe pengembalian seperti fungsi lainnya. Berikut penjelasan mengenai cara kerja fungsi bertingkat yang memiliki tipe pengembalian. Berikut contoh sintaks koding fungsi bertingkat dengan memiliki tipe pengembalian.
// Program Swift untuk mendemonstrasikan cara kerja // fungsi bertingkat Swift yang memiliki tipe pengembalian // Fungsi luar untuk menambahkan dua bilangan bulat // Di dalam fungsi ini kita memanggil // fungsi dalam. Fungsi ini mengalikan // jumlah dengan dua dan mengembalikan nilainya func add(num1: Int, num2: Int) -> Int{ // Fungsi dalam func multiplySum(sum : Int) -> Int{ // Mengembalikan hasil dari fungsi dalam return 2 * sum } // Menghitung jumlah total let totalSum = num1 + num2 // Menghitung jawaban akhir dengan memanggil // fungsi dalam let answer = multiplySum(sum: totalSum) // Mengembalikan jawaban akhir dari fungsi luar return answer } // Kode pengemudi // Menyimpan jawaban yang dikembalikan oleh fungsi add let result = add(num1 : 8, num2: 3) // Mencetak jawaban print("Hasil:", result)
Output dari sintaks diatas:
Hasil: 22
Pada contoh program diatas, kita memanggil fungsi luar “add()” dari luar fungsi luar dengan meneruskan dua parameter num1: 8 dan num2: 3 sebagai parameter. Perhatikan bahwa tipe pengembalian fungsi ini adalah Int. Setelah fungsi ini dipanggil, aliran kontrol program masuk ke dalam fungsi “add()” dan mencapai sintaks di mana kita menghitung jumlah dari dua bilangan bulat. Kemudian sintaks “totalSum” diteruskan ke fungsi dalam yaitu “multiplySum()” yang tipe pengembaliannya juga Int. Dalam fungsi ini, jumlah dikalikan dengan dua dan kemudian nilai tersebut dikembalikan ke pernyataan pemanggilan fungsi. Jawaban akhir disimpan dalam variabel answer di dalam fungsi luar.
Contoh Penggunaan Nested Functions dalam Kasus Nyata
Sekarang kita sudah memahami konsep dasar fungsi bertingkat dalam Swift, mari kita bahas beberapa skenario di mana nested functions bisa sangat berguna dalam pengembangan aplikasi sehari-hari. Berikut contoh penggunaan fungsi bertingkat dalam berbagai kasus.
1. Organisasi Kode
Fungsi bertingkat dapat membantu Anda mengatur kode dengan lebih baik, terutama ketika Anda memiliki beberapa fungsi kecil yang hanya digunakan dalam konteks fungsi luar. Dengan menyimpan fungsi-fungsi ini di dalam fungsi luar, Anda membatasi cakupan dan eksposur mereka, sehingga mengurangi risiko konflik atau kesalahan.
2. Pengurutan (Sorting)
Salah satu penggunaan umum dari fungsi bertingkat adalah ketika Anda perlu mengurutkan array atau kumpulan data dengan algoritma pengurutan khusus. Dalam hal ini, Anda dapat membuat fungsi pengurutan khusus di dalam fungsi luar yang bertanggung jawab atas operasi pengurutan. Berikut contoh sintaks koding penggunaan fungsi bertingkat dalam operasi pengurutan:
func sortUsingCustomComparator(_ arr: [Int]) -> [Int] { var sortedArray = arr func customComparator(_ a: Int, _ b: Int) -> Bool { // Logika perbandingan khusus return a % 2 < b % 2 } sortedArray.sort(by: customComparator) return sortedArray }
3. Fungsi Rekursif
Dalam beberapa kasus, Anda mungkin ingin menggunakan fungsi rekursif untuk menyelesaikan masalah. Fungsi bertingkat dapat digunakan untuk menyembunyikan fungsi rekursif dari lingkup global dan membatasi penggunaannya hanya pada fungsi luar. Berikut contoh sintaks koding penggunaan fungsi bertingkat dalam fungsi rekursif:
func factorial(_ n: Int) -> Int { func factorialHelper(_ num: Int, _ result: Int) -> Int { if num == 1 { return result } else { return factorialHelper(num - 1, num * result) } } return factorialHelper(n, 1) }
4, Pembungkus Fungsi (Function Wrapper)
Fungsi bertingkat juga dapat digunakan sebagai pembungkus (wrapper) untuk melacak waktu eksekusi, mencatat pesan, atau mengelola sumber daya selama fungsi berjalan.Berikut contoh sintaks koding penggunaan fungsi bertingkat dalam fungsi pembungkus :
func measureExecutionTime(_ function: () -> Void) { func startTimer() -> DispatchTime { return DispatchTime.now() } func endTimer(_ startTime: DispatchTime) { let endTime = DispatchTime.now() let nanoTime = endTime.uptimeNanoseconds - startTime.uptimeNanoseconds let timeInterval = Double(nanoTime) / 1_000_000_000 print("Waktu eksekusi: \(timeInterval) detik") } let startTime = startTimer() function() endTimer(startTime) }
Kesimpulan
Memahami konsep nested functions dalam Swift sangat penting untuk mengoptimalkan struktur dan kualitas kode Anda. Fungsi bertingkat dapat meningkatkan modularitas dan fleksibilitas kode Anda dengan menyembunyikan detail implementasi dan menjaga lingkup variabel yang lebih bersih. Dalam seri belajar Swift kali ini, kita telah mengeksplorasi berbagai aspek fungsi bertingkat, yang akan membantu Anda dalam meningkatkan keterampilan Anda dalam penggunaan Swift untuk membangun aplikasi yang lebih baik. Selamat mencoba dan semoga ulasan kali ini bermanfaat!
Temukan lebih banyak artikel seri belajar Swift maupun bahasa pemrograman lainnya hanya di CODEKEY. Klik https://codekey.id/ sekarang juga untuk langsung belajar gratis dan tak ketinggalan tutorial pemrograman menarik lainnya. Sampai bertemu lagi!
Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.