반응형
※ 이 글은 야곰님의 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 |