Fonksiyon, projenizde tekrar eden görevlerin kullanımı kolay, hızlı ve okunabilir hale getirmenizi sağlayan yapıdır. Örneğin; Instagram’daki beğeni fonksiyonunu ele alalım. Bir fotoğrafı 2 farklı şekilde beğenebiliriz:
1. Üzerine çift tıklayarak beğenebiliriz.
2. Post’un altında bulunan kalp ikonuna bir kez tıklayarak beğenebiliriz.
Bu iki farklı senaryo için arka tarafta aynı işlem çalışmaktadır. Böyle bir durumda, aynı işlemi yapan kodları 2 defa yazarsanız herhangi bir değişiklik yapmanız gerektiğinde her ikisinde de değişiklik yapmanız gerekecek. Fonksiyonlar, sizi bu durumdan kurtarır. Dilerseniz ilk fonksiyonumuzu yazalım.
Parametresiz fonksiyon tanımlama işlemine “func” anahtar kelimesini kullanarak başlıyoruz. Hemen ardından fonksiyona, işlevine uygun olacak bir isim veriyoruz, en son “()” ile fonksiyonu tanımlamış oluyoruz. “{“ ile başlayan ve “}” ile biten satırlar arasına ise bu fonksiyon çağırıldığı zaman çalışmasını istediğiniz kodları yazacaksınız. İlk fonksiyonumuzda adınızı ve soyadınızı yazdırmayı ele alalım.
Her seferinde “print(“Ufuk”) print(“Köşker”)” yazmaktansa tek seferde “adimiYazdir()” fonksiyonunu çağırmam yeterli olacaktır.
func fonksiyonAdi() {
// Kod
}
Bu fonksiyonun parametresiz fonksiyonlardan tek farkı, “()” parantezlerin arasına değişken tanımlaması yapmanız. Parametresiz olan fonksiyonumuzu, parametreli fonksiyona dönüştürelim ve farklı değerler ekleyelim.
Fonksiyon çağırıldığı zaman parametrede aldığınız değerleri, fonksiyonun içerisinde kullanabilirsiniz. Bir diğer deyişle, parametreler fonksiyon için girdi görevi görür.
func adimiYazdir(ad: String, soyad: String) {
print(ad)
print(soyad)
}
Tüm parametreler aynı türde olmayabilir, farklı türlerde de olabilirler. Buna örnek olarak, fonksiyonumuza bir de yas parametresini ekleyelim.
func adimiYazdir(ad: String, soyad: String, yas: Int) {
print(ad)
print(soyad)
print(yas)
}
Yaş parametresini, fonksiyona eklediğiniz zaman Xcode, yapılan değişikliği algılayıp sizden düzeltmenizi isteyecektir. Uyarının üzerine tıklayıp “Fix” düğmesine tıklamanız yeterli olacaktır.
Parametreli fonksiyonlar, çağırılma esnasında aldıkları parametreler ile işlem yaparlar fakat işlemin sonucu her ne olursa olsun (yazı, sayı vs.) bununla fonksiyonun içerisinde bir işlem yapmaktan öteye geçemezler. Dönüşlü fonksiyonlar ise içlerinde çalışan kodlardan elde ettikleri sonucu bize geri verirler yani döndürürler. Bir diğer deyişle, bir fonksiyonun döndürdüğü değer onun çıktısıdır.
Ek Bilgi: Dönüşlü bir fonksiyon parametreli olmak zorunda değildir.
Dönüşlü fonksiyona verilebilecek en iyi örnek toplama örneğidir. Bu örnekte toplanacak sayıları parametre olarak alıyoruz, sonucu ise fonksiyonun bitiminde döndürüyoruz.
func topla(sayi1: Int, sayi2: Int) -> Int {
let toplam = sayi1 + sayi2
return toplam
}