Swift Programlama – Functions (Fonksiyonlar)

Daha önceki derslerde, bir görevi yerine getirmek için print gibi mevcut işlevleri kullanmayı öğrendiniz. Bu durumda, fonksiyonların nasıl uygulandığını ayrıntıları konusunda endişelenmeyiniz. Ancak, sürdürülebilir, yeniden kullanılabilir kod yazmak istiyorsanız, kendi fonksiyonunuzu oluşturabilmeniz gerekir.

Bu derste soyutlamanın önemini daha iyi anlarken, farklı parametrelerle ve dönüş türleriyle fonksiyonları nasıl kullanabileceğinizi öğreneceksiniz

Ne Öğreneceksin

  • Kendi fonksiyonunuzu dönüş türü ile veya olmadan yazma
  • Fonksiyonlarınız için giriş parametrelerini belirleme
  • Gerekirse birden çok değer döndürme
  • Fonksiyonlarınızın çağrılma biçimini özelleştirme
  • Bir fonksiyona varsayılan parametre değerleri nasıl sağlanır.

Birisi sana “giyin” görevini verdiğinde, bu basit bir talimat gibi görünüyor. Ancak ne giyeceğinize, giysilerini nereye koyacağınıza ve giysilerinizi nereden bulacağınıza ilişkin ayrıntılar “hazır giyin” ifadesi içinde tamamlanmış olacaktır. Karmaşık olan ve ona atıf yapmak için daha basit bir yol tanımlayan bir fikir, bir soyutlamadır. Fonksiyon, kodda bir soyutlama yaratmanın temel yollarından biridir.

Bir fonksiyon üç şeyden oluşur: adı, isteğe bağlı bir parametre listesi ve isteğe bağlı bir dönüş türünden oluşur. Bir fonksiyonu çağırmak, telefon görüşmesi yapmaya benzer. Bilgileri (parametreleri) gönderebilirsiniz, geri bilgi de (geri dönüş değerleri) alabilirsiniz. Swift’ deki bir fonksiyon; sıfır, bir veya birden fazla parametre alabilir veya değer de döndürebilir. Bir fonksiyon bir değer döndürdüğünde, onu yok sayma seçeneğiniz vardır.

let ile bir sabitin bildirimi yapılır veya var ile bir değişken tanımlaması yapılabilir. Benzer şekilde, func anahtar kelimesi ile Swift derleyicisine bir fonksiyon olduğunu bildirirsiniz. func‘ın hemen sonrasında, fonksiyonun adını, ardından parantezler () eklenir; duruma göre bu parantezler içindeki parametrelerin listesini içerebilir veya içermeyebilir. Son olarak, fonksiyon bir dönüş değeri içeriyorsa, bir ok (->) yazılır ve  Int, String, Person vb gibi dönecek veri türü yazılır.

Fonksiyon Tanımlama

Günlük rutin işlerinizi düşünün. Muhtemelen her gün gerçekleştirdiğiniz yinelenen görevler (örneğin ayakkabı bağlama, kahvaltı yapma ve iş veya okula gitmek gibi) tanımlayabilirsiniz. Bu görevlerden bazıları ek bir girdi gerektirmez. Her seferinde aynı şekilde ayakkabınızı bağlarsınız. Girişsiz fonksiyonlar için, fonksiyon parametresi olmayacaktır:

Ancak, her kahvaltının içerikler listesi olabilir. Bu nedenle, fonksiyonu çağırdığınızda listeyi belirlemek için parametreleri kullanırsınız:

kahvaltiYapma(yiyecek: ["yumurta", "portakal suyu"])

kahvaltiYapma(yiyecek: ["tahıl", "tost"])

pi’ nin (π) ilk on basamağını gösterecek bir fonksiyona bir örnek olarak verilebilir. Pi’nin yazdırılması ek bir giriş gerektirmediğinden, parametre yoktur. Ve yazdırma pi’ nin fonksiyon çağrısına ilişkin herhangi bir şeyi döndürmesi gerekmediğinden, hiçbir dönüş değeri belirtilmez.

Bir fonksiyon doğru olarak, adını yazarak herhangi bir yerden çağırabilir veya uygulayabilirsiniz.

Parameters (Parametreler)

Parametreli bir fonksiyon belirtmek için, değer için bir ad, iki nokta üst üste (:) ve değer türü (hepsi parantez içinde) ekleyin. Örneğin, değeri üç katına çıkaran ve yazdıran bir fonksiyon yazmak istediğimizde, fonksiyon adı Carpma olarak adlandırılır ve değer adında  Int değişkenini alır.

Yukarıdaki durumda deger, fonksiyon içinde kullanılabilen bir sabittir.

Bir fonksiyona birden fazla bağımsız değişkeni iletmek için her parametreyi virgül (,) ile ayırmanız gerekir. Aşağıda, iki Int parametresini alıp, bunları birlikte çarpan ve sonucu yazdıran bir fonksiyona örnek verilmektedir:

Argument Labels (Argüman Etiketleri)

Şu ana kadar, bir fonksiyon içindeki her bağımsız değişkene ilişkin etiket, dahili ve harici olarak olduğu gibi aynı ada sahipti. Aşağıdaki örnekte, ilk adın hem fonksiyon içinde hem de fonksiyon çağrıldığında kullanıldığını düşünün.

Ancak fonksiyonunuzun biraz daha temiz okumasını istediğinizi düşünün.

Argüman “to” ve “and” etiketlerini işlevi çok net bir şekilde okur: “Merhaba Ahmet ve Ali “. Bununla birlikte, bu fonksiyonun uygulanışını kontrol edin:

Muhtemelen, fonksiyonda çok kötü isimlendirme olduğunu görebilirsiniz. Fonksiyon içindeki sabitin adının bağımsız değişken etiketinden farklı olmasını isterseniz, yerel addan önce harici bir ad belirtebilirsiniz:

Eğer fonksiyon argüman etiketi olmadan daha net görünüyorsa, devam edip atlayabilirsiniz. Örneğin, yazdırma fonksiyonunu kullanın: 

Fonksiyonun adı zaten bir parametre olarak ne geçilmesi gerektiğini çok netleştiriyor. Fonksiyonu şu şekilde çağırmak zorunda kalırsanız, olağan dışı olduğunu göreceksiniz:

Bağımsız değişken etiketini atlamak için harici adın yerine _ kullanın:

Parametreler fonksiyonun esnek kalmasına izin verir, ancak çoğunlukla kullanmak istediğiniz bir değer vardır. Örneğin, hemen hemen tüm yemeklerinizle su içebilirsiniz.

Default Parameter Values (Varsayılan Parametre Değerleri)

Fonksiyon tanımının bir parçası olarak herhangi bir parametre için bir varsayılan değer ihtiyacınızı karşılayabilir. Bu şekilde, fonksiyonu parametreyle veya parametre olmadan çağırabilirsiniz. Parametre belirtilmemişse, fonksiyon varsayılan değeri kullanacaktır. Tüm parametreleri varsayılan değerlerle birlikte listenin sonuna yerleştirmeniz gerekir ve bu parametrelerin hepsinde bağımsız değişken etiketleri olmalıdır.

Return Values (Dönüş Değerleri)

Türetme sonucundan önce “Sonucu” yazdıramazsınız. Bunun yerine, fonksiyonun yeni değeri döndürmesi daha mantıklı olabilir. Bunu yapmak için, fonksiyon bildirimini bir dönüş değeri ve değerin türünü belirtmek için ayarlamanız gerekir. İki Int türünün çarpımının daima bir Int ile sonuçlanacağını öğrendiniz, yani kullanacağınız dönüş türü de Int olmalıdır.

Fonksiyonun gövdesi içinde dönüş fonksiyonunun geri döneceğini belirtmek için return anahtar kelimesini kullanılır. Bu örnekte, sonuç döndürmek isteyeceksiniz:

Değerler çarpılarak, yeni değere son değişkeninde saklanır. Döndürülmeden önce yazılan sabit olmadan da fonksiyon döndürülebilir:

Bu işlevi çağırmak ve dönüş değerini kullanmak için, dönüş değerini bir sabite atayabilirsiniz.

Gelecekte sonuc’u tekrar kullanmaya ihtiyacınız yoksa, print ifadesinin içindeki işlevi kullanabilirsiniz ve değeri bir sabite atamayı atlayabilirsiniz:

 

Not: Makaledeki anlatımlar Apple tarafından yayınlanan App Development with Swift kitabının Türkçeye çevirmeye gayret gösterdiğim kitap çalışmasından alınmıştır. Çevirinin tamamı bittikten sonra ücretsiz pdf olarak yayınlanacaktır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.