Swift’in önemli özelliklerinden biri de, bir fonksiyonun formel parametre listesi içinde başka bir fonksiyonun yer almasıdır. Aşağıdaki kod parçasında, v fonksiyonunun tanımına dikkat ediniz:
func u(a:Int,b:Int)->Bool
{if a == b { return true }
else { return false}
}
var kontrol : (Int,Int) -> Bool = u
v fonksiyonunun parametrelerinden biri hatta ilki, kontrol adlı ve kontrol:(Int,Int)->Bool şeklinde tanımlanmış olan bir fonksiyondur:
func v(kontrol:(Int,Int)->Bool,a:Int,b:Int,c:Int)->Int
{ if kontrol(a,b) { return c+2}
else { return c-2}
}
v fonksiyonu 7, 7 parametreleri ile kontrol fonksiyonunu ve c değişkenini almakta gövdesi içinde yaptığı kontrol ile eşitlik halinde c+2’yi eşitsizlik halinde ise c-2 değerini göndermektedir.
Programın tam listesi aşağıdadır:
func u(a:Int,b:Int)->Bool
{if a == b { return true }
else { return false}
}
var kontrol : (Int,Int) -> Bool = u
func v(kontrol:(Int,Int)->Bool,a:Int,b:Int,c:Int)->Int
{ if kontrol(a,b) { return c+2}
else { return c-2}
}
print(v(kontrol:kontrol,a: 7,b: 7,c: 8))
Programın çıktısı ise aşağıdadır:
10