Mac Plus

Hello Swift

closure 사용하기

  • 기본문법 closure (지금껏 정확한 축약형을 알지 못하고 사용한것 같아서 새롭게 정리)
  • 이름없는 함수라고 생각하면 쉽다. closure 특징
    1. 매개변수, 반환타입 생략가능
    2. return 키워드 생략가능
    3. 축약된 전달인자 사용가능
    4. 후행 클로저
//closure 기본형태
{ (매개변수) -> 반환타입 in  //여기서 in은 앞에 매개변수&반환타입과 실행코드를 구분해주기 위해서 사용 (in 도 생략가능)
    실행코드
}
let names = ["apple","banana","car","dream"]
let basicClosure = names.sorted(by: { (left: String, right: String) -> Bool in
    return left > right
})
// ()괄호를 닫아주고 다음에 오는 블럭은 클로저로 인식하겠다 이것이 후행클로저 이다. 여기서 ()까지 생략이 가능하다.
let 후행클로저1 = names.sorted() { (left: String, right: String) -> Bool in
    return left > right
}
let 후행클로저2 = names.sorted { (left: String, right: String) -> Bool in
    return left > right
}
//매개변수 타입과, 반환타입을 생략이 가능하다.
let 매개변수반환타입생략 = names.sorted { (left, right) -> Bool in
    return left > right
}
//단축인자 이름을 사용할 수 있다.
let 단축인자사용 = names.sorted {
    return $0 > $1
}
//암시적 반환 (한줄만 사용할때 return을 생략할 수 있다.)
let 암시적변환 = names.sorted { $0 > $1 }
  • 다른사람과의 협업에서 너무 축약된 클로저를 사용하게 되면 가독성이 많이 떨어지게 된다. 적당히~ 사용바람