Closure Örnekleri
Closure, fonksiyonların aksine ismi olmadan parametre alıp bir değer döndüren, bir değişkende saklanabilen bir kod bloğu yapısıdır.
Closure syntax olarak nasıl göründügüne örnek vermek gerekirse:
let exampleClosure = { (parameters) -> returntype in
statements
}
UIKit kütüphanesinden bir örnek vermek gerekirse de:
let button = UIButton(type: .system, primaryAction: UIAction(title: "Button Title", handler: { action -> Void in
print("Button with title \(action.title) tapped!")
}))
Örnekleri zenginleştirmek gerekirse.
Parametre almayan ve geriye değer döndürmeyen bir closure
var sayHello:() -> Void = {
print("Hello")
}
Yukarıdaki örneği hem parametre alan hem de parametre döndüren bir formata çevirirsek
var sayHello:(String) -> String = { (value) in
return "Hello \(value)"
}
2 parametre alan bir örneğe çevirirsek de
var sayHello: (String,String) -> String = { (value1, value2) in
return "Hello \(value1) and \(value2)"
}
Closure'larda kısaltmalar, sıklıkla kullanılan ve karşımıza da sık sık çıkan bir yöntemdir. Farklı bir örnekte göstermek gerekirse,
var calculateSquare: (Int) -> Int = { (value) in
return value * value
}
print(calculateSquare(5)) //25
//Kısaltma 1
var calculateSquare: (Int) -> Int = { return $0 * $0 }
print(calculateSquare(5)) //25
//Kısaltma 2
var calculateSquare: (Int) -> Int = { $0 * $0 }
print(calculateSquare(5)) //25
//Kısaltma 3
//Typealias ile kullanımı
typealias OperateType = (Int) -> Int
var calculateSquare: OperateType = { $0 * $0 }
print(calculateSquare(5)) //25
Yukarıdakı örneklerde temel yapı gösterilmiştir. Farklı kullanımlarıda mevcuttur. Belki onun da örneklerini farklı bir yazıda paylaşırım.