Photo by Luca Bravo / Unsplash

Closure Örnekleri

Swift Mar 11, 2022

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.

Tags

Furkan Ozoglu

iOS Developer & Geomatics Engineer