[Swift] 문법 최적화(Syntax Optimization)_Closures 사용법 & 예제

728x90

문법 최적화(Syntax Optimization)_Closures 사용법 & 예제


Syntax Optimization 란?

  • 기본적으로 구현되어 있는 메소드를 사용할때(Closure) 스위프트는 단순하게 작성된 코드를 선호한다.
  • 문법 최적화 하여 클로저 작성시 5가지 규칙이 있습니다.
1. 이미 구현되어 있는 메소드 사용한다면 파라미터 형식, 리턴 형식 생략 가능
2. 파라미터 이름, in 생략 -> Shorthand Argument Name (ex) $0, $1, $n로 대체
3. 클로저에 포함된 코드가 단일 return 이라면 return 생략(implicit return)
4. 클로저가 마지막 파라미터라면 in line -> Trailing Closure() 뒤에
5. 괄호에 파라미터 없으면 괄호 생략 가능, Argument Label 남아 있어도 삭제 한다.

사용 예제

문법 최적화를 이용한 클로저 단순화

let product = [
    "MacBook Air", "MacBook Pro",
    "iMac", "iMac Pro", "Mac Pro", "Mac mini",
    "iPad Pro", "iPad", "iPad mini",
    "iPhone Xs", "iPhone Xr", "iPhone 8", "iPhone 7",
    "AirPods",
    "Apple Watch Series 4", "Apple Watch Nike+"
]

//MARK: 문법 최적화를 적용하지 않은 정식 문법
var proModels = product.filter({ (name: String) -> Bool
    in
    return name.contains("Pro")
})

//MARK: 문법 최적화 적용
product.filter {
    $0.contains("Pro")
}

//MARK: 문법 최적화를 적용하지 않은 정식 문법
//구현된 메소드의 형식 파악하고 직접 비교식 구현 , String 두개 받아서 Bool 리턴
proModels.sort(by: { (lhs: String, rhs: String) -> Bool
    in
    return lhs.caseInsensitiveCompare(rhs) == .orderedAscending
})

//MARK: 문법 최적화 적용
proModels.sort {
    $0.caseInsensitiveCompare($1) == .orderedAscending
}

출처 : 어서와! Swift는 처음이지?(Programmers)
728x90

댓글

Designed by JB FACTORY