클로저 고급

asdasd·2021년 12월 18일
0

클로저
{ (매개변수 목록) -> 반환타입 in
     실행코드
}

함수
func 함수이름(매개변수 목록) -> 반환타입 {
     실행코드
}

후행 클로저

함수 전달인자 마지막에 클로저가 있다면 호출시 클로저를 뒤로 빼줄 수 있다.

func calculate(a: Int, b: Int, method: (Int, Int) -> Int) -> Int {
     return method(a,b)
}

calculate(a: 10, b: 10) { ( left: Int, right: Int) -> Int in
     return left + right
}

반환타입 생략
반환 타입을 알고 있으면 굳이 클로저에서 반환타입을 명시해 주지 않아도 됨
대신 in 키워드는 생략불가

calculate(a: 10, b: 10) { ( left: Int, right: Int) -> 생략in
     return left + right
}

단축 인자이름
클로저의 매개변수 이름이 굳이 불필요하다면 단축 인자이름을 활용할 수 있음
단축 인자이름은 클로저의 매개변수의 순서대로 $0, $1... 처럼 표현함

calculate(a: 10, b: 10, method: {
     return $0 + $1
})

암시적 반환 표현
클로저가 반환하는 값이 있다면
클로저의 마지막 줄의 결과값은 암시적으로 반환값으로 취급가능함
calculate(a: 10, b: 10) {
     $0 + $1
}

최종
축약되지 않은 클로저와 축약 후 문법 비교
calculate(a: 10,b: 10, method: { (left: Int, right: Int) -> Int in
     return left + right
calculate(a: 10,b: 10){ $0 + $1 }

profile
공부 기록

0개의 댓글