Swift Closure

Aşağıdaki yazı yakında yayınlanak olan kitabımdan bir alıntı olup izinsiz kopyalanıp kullanılamaz !

Closure’lar değişkenlerde saklanabilen, fonksiyonlara parametre olarak geçilebilen özel kod bloklarıdır. Standart kütüphanede de sıkça kullanılmış bir özellik olduğu öğrenimi kritik olan bir konudur. Örneğin sorted() isimli standart fonksiyon ilk parametresine aldığı diziyi, ikinci parametresine aldığı closure ile sıraya dizer ve sıralanmış halini geriye döndürür. Sıralama için kullanılacak olan karşılaştırmanın mantığı bir kod bloğu yani closure şeklinde yazılmalı ve bu fonksiyona parametre olarak gönderilmelidir. Örneğin aşağıda “clsr” isimli değişken bu duruma örnek olarak gösterilebilir nitelikte bir closure içermektedir.

var arr:[Int] = [12, 3, 5, 20, 10]

// Closure
var clsr = {(a: Int, b: Int) -> Bool in return a < b}

// Kullanımı
let arr2 = sorted(arr, clsr)

// Test
for (var i = 0; i <= arr.count-1; ++i)
{
print(arr2[i])
}

Şüphesiz closure’lar geçici değişkenlere atanmak zorunda değildir istenilirse doğrudan kullanılabilir. Örneğin:
var arr:[Int] = [12, 3, 5, 20, 10]

let arr2 = sorted(
arr,
{
(a: Int, b: Int) -> Bool in return a < b
}
)

for (var i = 0; i <= arr.count-1; ++i)
{
print(arr2[i])
}

Reklamlar