스위프트 공식문서 정리

https://docs.swift.org/swift-book/LanguageGuide/Closures.html

1. 클로저란?

closures are self-contained blocks of functionality that can be passed around and used in your code.

2. Capturing Value

클로저는 상수 또는 변수 참조 가능 외부에 정의된 변수를 참조 할 수있음

func makeIncrementer(forIncrement amount:Int)->()->Int{
	var runningTotal = 0
	func incrementer()->Int{
		runningTotal += amount
		return runningTotal
	}
	return incrementer
}

makeIncrementer가 int를 받아 ()→Int인 함수를 리턴한다로 정의됨

중첩함수인 incrementer는 자신을 둘러싼 함수 makeIncrementer의 amount와 runningTotal값을 캡쳐한다.

하여 함수 내부에서 정의되지 않은 runningTotal, amount 두 변수를 사용할 수 있게된다.

3. 클로저 표현식

3-1) 가장 기본적인 정렬 문법

let names = ["chris","Alex","Ewa","Barry","Daniella"]
func backward(_ s1:String, _ s2: String)->Bool{
	return s1>s2
}

var reversedNames = names.sorted(by:backward)

3-2)클로저를 사용해보자

var reversedName = names.sorted(by: {s1:String, s2:String)->Bool in
	return s1>s2
})

3-2) 타입 추론 클로저

reversedNames = names.sorted(by:{s1,s2 in return s1>s2})