Dalam artikel ini, anda akan belajar tentang fungsi bersarang di Swift dan bagaimana ia berfungsi dengan contoh.
Sekiranya fungsi ada di dalam badan fungsi lain, ia dipanggil fungsi bersarang.
Sintaks fungsi bersarang
func funcname () (// pernyataan fungsi luar func anotherFuncname () (// pernyataan fungsi dalaman))
Di sini, fungsinya anotherFuncname
ada di dalam badan fungsi lain funcname
.
Perlu diperhatikan bahawa, fungsi dalaman hanya dapat dipanggil dan digunakan di dalam fungsi penutup (fungsi luar).
Contoh 1: Fungsi bersarang tanpa nilai kembali
func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack")
Semasa anda menjalankan program, outputnya adalah:
Helo! Jack
Dalam program di atas, fungsi bersarang addGreetingAndPrint()
dipanggil dari fungsi lampiran outputMessageByGreeting()
.
Pernyataan itu outputMessageByGreeting("Jack")
memanggil fungsi luar. Dan pernyataan addGreetingAndPrint()
di dalam fungsi luar memanggil kaedah yang mengeluarkan Hello! Jack di konsol.
Anda tidak boleh memanggil fungsi addGreetingAndPrint
di luar fungsi outputMessageByGreeting
.
Contoh 2: Fungsi bersarang dengan parameter dan nilai kembali
Fungsi bersarang dapat mengandungi fungsi dengan parameter dan nilai kembali.
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)
Semasa anda menjalankan program, outputnya adalah:
5
Dalam program di atas,
- fungsi luar adalah
operate()
, dengan nilai kembali jenis Fungsi(Int,Int) -> Int
. - dan fungsi dalaman (bersarang) adalah
add()
dansubtract()
.
Fungsi bersarang add()
dan subtract()
dengan cara digunakan di luar fungsi penutup operate()
. Ini mungkin kerana fungsi luar mengembalikan salah satu fungsi ini.
Kami telah menggunakan fungsi dalaman di luar fungsi lampiran operate()
sebagai operation(2, 3)
. Program secara dalaman memanggil add(2, 3)
mana yang mengeluarkan 5 di konsol.