본문 바로가기

Language/Swift

Swift 클로저

반응형

※ 이 글은 야곰님의 Swift 스위프트 프로그래밍 책을 참고하여 포스팅 했습니다.

 

IOS 소스 확인하다가 클로저 때문에 애좀 먹어서 정리해놓으려고 한다. 클로저는 요즘 함수형 프로그래밍에서 많이 사용되는 문법으로 스위프트도 클로저를 사용할 수 있다.

말이 필요없다. 예제 소스 ㄱㄱ

// Swift 라이브러리 Sorted()
func sorted(by areInIncreasingOrder: (Element, Element) -> Bool) ->
	[Element]
    

// 일반적인 함수 사용
func backwards(first : String, second : String) -> Bool {
	return first > second
}

let names = ["아이언맨", "캡틴아메리카", "엔트맨"]
let reversed: [String] = names.sorted(by: backwards)
dump(reversed) // 캡틴아메리카, 엔트맨, 아이언맨 출력


// 클로저 사용
let reversed: [String] = names.sorted(by : {(first : String, second : String) -> Bool in
	return first > second
})

// 매개변수 타입 생략 가능
let reversed: [String] = names.sorted(by : {(first, second) -> Bool in
	return first > second
})

// return 생략가능
let reversed: [String] = names.sorted(by : {(first, second) -> Bool in
	first > second
})

// 반환타입 생략 가능
let reversed: [String] = names.sorted(by : {(first, second) in
	first > second
})

// 후행 클로저
let reversed: [String] = names.sorted{ (first : String, second : String) -> Bool in
	return first > second
}

// 매개변수 생략 가능, 매개변수 위치에 따라 $0, $1, $2 ... 와 같은 축약 표현을 사용할 수 있음
let reversed: [String] = names.sorted{
	return $0 > $1
}

// return 생략 가능
let reversed: [String] = names.sorted{ 
	$0 > $1 
}



 

 

반응형

'Language > Swift' 카테고리의 다른 글

Swift map, filter, reduce  (0) 2020.07.19
Swift 구조체와 클래스의 차이  (0) 2020.07.16