1. parameter 형식과 return 형을 생략한다
2. parameter 이름을 생략하고 in 키워드도 지운 후 shorthand argument name으로 대체한다 ($0, $1, $2 ...)
3. closure 에 포함된 코드가 단일 return문이라면 return 키워드를 생략한다 (implicit return)
4. closure 가 마지막 parameter라면 trailing closure로 작성한다.
5. argument label이 남아있다면 삭제한다
6. 괄호 사이에 parameter 가 더이상 없다면 괄호도 없애버리자
//
import Foundation
let list = ["Apple", "Banana", "Cactus", "DeerMeat"]
// where 파라미터로 인라인 클로저를 전달 문법 최적화를 적용하지 않은 전체 문법으로 작성.
let a = list.contains(where: { (name: String) -> Bool in
return name.hasPrefix("A") -----------> True
})
-------------------------------------------------------------------------------------
"최적화 하는 과정"
1. parameter 형식과 return 형을 생략한다
let a = list.contains(where: { (name) in
return name.hasPrefix("A")
})
2. parameter 이름을 생략하고 in 키워드도 지운 후shorthand argument name으로 대체한다 ($0, $1, $2 ...)
let a = list.contains(where: {
return $0.hasPrefix("A")
})
3. closure 에 포함된 코드가 단일 return문이라면 return 키워드를 생략한다 (implicit return)
let a = list.contains(where: {
$0.hasPrefix("A")
})
$0.hasPrefix("A")
}
5. argument label이 남아있다면 삭제한다
let a = list.contains() {
$0.hasPrefix("A")
}
6. 괄호 사이에 parameter 가 더이상 없다면 괄호도 없애버리자
let a = list.contains {
$0.hasPrefix("A")
}
아싸 최적화 과정 끝
-------------------------------------------------------------------------------------
// 이제 contains(where:)를 호출, -> 문법 최적화를 적용.
let b = list.contains {
$0.hasPrefix("A") -----------> True
}
print(a && b) -----------> True
//
'ios Development > Swift' 카테고리의 다른 글
tuple decomposition (0) | 2020.01.08 |
---|---|
unnamed tuple, named tuple (0) | 2020.01.08 |
while 반복문의 두가지 (0) | 2020.01.04 |
for in loop의 다양한 활용 (0) | 2020.01.04 |
Type Alias (0) | 2020.01.02 |