Her fonksiyon, parametre ve return değerlerinin tipleriyle belirlenen bir
fonksiyon tipine sahiptir.
Kod:
func sum(a: Int, b: Int) -> Int {
return a + b
}
func multiply(a: Int, b: Int) -> Int {
return a * b
}
Üstte yer alan sum ve multiply fonksiyonları 2’şer adet int tipinde parametre değeri almaktadır. Return değeri olarak ise yine int tipinde bir değer döndürmektedir.
Bu iki fonksiyonda
(Int, Int) -> Int tipindedir ve şu şekilde okunabilir:
Bu fonksiyon 2 adet int tipinde parametre sahibidir ve işlem sonucunda int tipinde bir return değerine sahiptir.
Kod:
func printHelloWorld() {
println("hello, world")
}
Üstteki fonksiyon ise:
Bu fonksiyon hiç bir parametre almamaktadır ve void tipinde değer döndürmektedir. Fonksiyonlar yaptıkları işlem sonucunda bir değer üretmiyorlarsa, her zaman void değeri döndürürürler. Bu da boş bir tuple değerine () eşittir.
Fonksiyon Tiplerini Kullanma Kod:
var mathFunction: (Int, Int) -> Int = multiply
Üstteki kod satırında
mathFunction adında bir değişken tanımlıyoruz. Daha sonra da
multiply isimli foknsiyonu işaret ediyoruz. Yani kaba tabirle söyleyecek olursak, bir fonksiyon tipini değişken olarak kullanıyoruz.Örnek üzerinden gidecek olursak:
Kod:
println("Sonuç: (mathFunction(2, 3))")
//Konsola "Sonuç: 6" yazdıracaktır.
mathFunction = sum
println("Sonuç: (mathFunction(2, 3))")
//Konsola "Sonuç: 5" yazacaktır.
Gördüğünüz gibi, en başta multiply işlemini tanımladığımız fonksiyon tipi değişkenine, daha sonra sum işlemini de tanımlayabiliyoruz. Bunu yaptıktan sonra konsolda çıkan sonuçta, önce çarpma daha sonra da toplama işlemi yapıldığını görebilirsiniz.
Fonksiyon Tiplerini Parametre Olarak Kullanma Fonksiyon tiplerini değişken olarak nasıl kullanabileceğimizi anladık. Bunun yanında fonksiyon tiplerini başka fonksiyonlar için parametre olarak kullanabiliriz. Biraz karışık bir cümle oldu, örneği incelediğinizde çok basit ve etkili bir işlem olduğunu anlayacaksınız.
Kod:
func printMathResult(mathFunction: (Int, Int) -> Int, a: Int, b: Int) {
println("Sonuç: (mathFunction(a, b))")
}
printMathResult(sum, 3, 5)
// Konsola "Sonuç: 8” yazacaktır
mathFunction isimli fonksiyon tipini parametre olarak kullandık ve ona sum fonksiyonunu gönderdik. Bu da bize 3 ile 5 i toplayıp sonucunu verdi.