Di artikel ini, Anda akan mempelajari tentang fungsi bertingkat di Swift dan cara kerjanya dengan contoh.
Jika suatu fungsi ada di dalam tubuh fungsi lain, itu disebut fungsi bertingkat.
Sintaks dari fungsi bertingkat
func funcname () (// pernyataan fungsi luar func anotherFuncname () (// pernyataan fungsi dalam))
Di sini, fungsinya anotherFuncname
ada di dalam tubuh fungsi lain funcname
.
Perlu dicatat bahwa, fungsi bagian dalam hanya dapat dipanggil dan digunakan di dalam fungsi penutup (fungsi luar).
Contoh 1: Fungsi bersarang tanpa nilai yang dikembalikan
func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack")
Saat Anda menjalankan program, hasilnya adalah:
Halo! Mendongkrak
Dalam program di atas, fungsi bersarang addGreetingAndPrint()
dipanggil dari fungsi penutup outputMessageByGreeting()
.
Pernyataan itu outputMessageByGreeting("Jack")
memanggil fungsi luar. Dan pernyataan addGreetingAndPrint()
di dalam fungsi luar memanggil metode yang menghasilkan Halo! Jack di konsol.
Anda tidak dapat memanggil fungsi di addGreetingAndPrint
luar fungsi tersebut outputMessageByGreeting
.
Contoh 2: Fungsi bersarang dengan parameter dan nilai kembalian
Fungsi bersarang dapat berisi fungsi dengan parameter dan mengembalikan nilai.
func operate(with symbol:String) -> (Int, Int) -> Int ( func add(num1:Int, num2:Int) -> Int ( return num1 + num2 ) func subtract(num1:Int, num2:Int) -> Int ( return num1 - num2 ) let operation = (symbol == "+") ? add : subtract return operation ) let operation = operate(with: "+") let result = operation(2, 3) print(result)
Saat Anda menjalankan program, hasilnya adalah:
5
Dalam program di atas,
- fungsi luarnya adalah
operate()
, dengan nilai kembalian dari tipe Fungsi(Int,Int) -> Int
. - dan fungsi bagian dalam (bersarang) adalah
add()
dansubtract()
.
Fungsi bersarang add()
dan subtract()
dengan cara digunakan di luar fungsi penutup operate()
. Ini dimungkinkan karena fungsi luar mengembalikan salah satu dari fungsi ini.
Kami telah menggunakan fungsi bagian dalam di luar fungsi penutup operate()
sebagai operation(2, 3)
. Program ini secara internal memanggil add(2, 3)
keluaran 5 di konsol.