Swift: Nedir Bu Closures?

Closure Nedir?

Ayşegül Akbaş
Kodcular
Published in
3 min readFeb 26, 2022

--

Herkese selamlar, bu yazımda swift programlama dilinin anlaşılması zor konularından biri olan Closure’lardan bahsedeceğim. Nedir bu Closures? :) Geriye değer döndürebilen, herhangi bir değişkene atanabilen ve atandığı değişkende saklanabilen kod bloklarına “Closure” denmektedir. Closure’lar aslında özelleştirilmiş fonksiyonlar gibi düşünülebilir. Özellikle iOS programlamaya yeni başlarken veya swift programlama dilinin temelleri öğrenilirken anlaması çok karmaşık görünen bu yapıyı gelin daha yakından inceleyelim.

Örnek gösterecek olursak alan hesabı için bir closure tanımlayalım.

Görüldüğü üzere yukarıda geriye değer döndüren bir closure tanımlamasının örneği verilmiştir. Aslında closure geriye değer döndürmek zorunda değildir. Ancak “return” ifadesi kullanılarak geriye değer döndürme işlemi sağlanabilir ve devamında closure herhangi bir yerde çağırılabilir.

Closure Türleri Nelerdir?

Burada dört farklı türden örneklerle beraber sırasıyla bahsedeceğim. Karmaşık görünse de aslında kullanımı arttıkça ne kadar pratik olduğunu ve kodlarımızı yazarken bize çok fazla kolaylık sağladığını anlayabileceksiniz.

  • Parametre Almayan ve Geriye Değer Döndürmeyen Closures
  • Parametre Alan Closures
  • Geriye Değer Döndüren Closures
  • Trailing Closures (Tam Türkçe karşılığı yok ne yazık ki :) )

Şimdi bunları örneklerle daha iyi anlamlandırabiliriz.

  • Parametre Almayan ve Geriye Değer Döndürmeyen Closures

Örnekte görüldüğü gibi closure herhangi bir parametre almadı ve geriye değer döndürmedi. En basit kullanıma sahip closure türüdür.

  • Parametre Alan Closures

Burada ise örnek olarak yazılan closure’ın parametre kabul ettiğini görebiliyoruz. Kullanımı aşağıda görüldüğü üzere oldukça basittir.

Ayrıca ek bilgi olarak parametrelere isim vermediğimizde bunlara “$” ile de ulaşabiliriz. Aşağıda “$” kullanılarak çağırımı gösterilmiştir.

Bence ek bilgi olarak verdiğim kullanım kesinlikle çok daha pratiktir ayrıca kodlarınızı yazarken sizlere zaman tasarrufu sağlayacaktır.

  • Geriye Değer Döndüren Closures

Evet “return” kullanarak closure’ların geriye değer döndürmesini sağlayabileceğimizden bahsetmiştik. Aşağıdaki örnekte bunun kullanımı ve sonrasında ise nasıl geri çağırıldığı gösterilmiştir.

  • Trailing Closures

Bu türü de şöyle açıklayabiliriz. Sondaki Closure’da , eğer bir fonksiyon bir closure’ı son parametresi olarak kabul ederse, yani eğer bir metodun içine aldığı parametrelerin en sonuncusu closure ise trailing closure kullanılabilir.

Görüldüğü üzere basit closure kullanımlarından kendimce kısa örnekler vererek açıklamaya çalıştım. Kendim de swift öğrenme sürecimde bu konu üzerinde oldukça zaman harcamış biri olarak bu konunun başta anlaması zor ve karmaşık olduğunu düşündüm. Ancak kodlarınızı yazarken kullandıkça her şey oturmuş olacaktır.

Umarım faydalı olabilmişimdir. Bir daha ki yazımda görüşmek üzere :)

Referanslar

--

--

Ayşegül Akbaş
Kodcular

devops eng. || computer eng. || read. learn. share.