본문 바로가기
2022_iOS 앱 개발자 워크숍/1, Swift 문법 복습

Swift : 클로저, 후행 클로저

by 황민우 2022. 1. 5.

클로저 [ Closure ]

 : 익명함수

 - 클로저 표현식은 독립적인 코드 블록이다.

 

형식

{ ( <매개변수 이름> : <매개변수 타입>, ... ) -> <반환 타입> in
		// 클로저 표현식 코드
}

 

예제

 - 일반 함수 표현 -
 
func add(x: Int, y: Int) -> Int {
    return(x+y)
}
print(add(x:1,y:2))


실행결과
// 3
 - 클로저 표현식 - 
 
 let add1 = { (x: Int, y: Int) -> Int in
    return(x+y)
}
print(add1(1, 2))


실행결과
// 3

가감승제 함수 클로저 표현식으로 바꾸어보기 예제

 

예제 1 

예제 2

예제 3

예제 4

 


클로저 축약 표현 예제

- 클로저 -

result = math(x: 10, y: 20, cal: {(val1: Int, val2: Int) -> Int in
    return val1 + val2
})
print(result)
- 클로저 : 리턴형 생략 -

result = math(x: 10, y: 20, cal: {(val1: Int, val2: Int) in
    return val1 + val2
})
print(result)
- 클로저 : 매개변수 생략, 단축인자 사용 -

result = math(x: 10, y: 20, cal: {
    return $0 + $1
})
print(result)
- 클로저 : return 생략 - 

result = math(x: 10, y: 20, cal: {(
    $0 + $1
})
print(result)

후행 클로저 [ Trailing Closure ]

: 클로저가 함수의 마지막 argument라면 마지막 매개변수 이름을 생략한 후 함수 소괄호 외부에 클로저를 구현할 수 있다.

 

 클로저 -> 후행 클로저 예제

- 클로저 -

result = math(x: 10, y: 20, cal: {(val1: Int, val2: Int) -> Int in
    return val1 + val2
})
print(result)
- 후행 클로저 -

result = math(x: 10, y: 20) {(val1: Int, val2: Int) -> Int in
	return val1 + val2
}
print(result)
- 후행 클로저 : 리턴형 생략 -

result = math(x: 10, y: 20) {(val1: Int, val2: Int) in
	return val1 + val2
}
print(result)
- 후행 클로저 : 매개변수 생략, 단축 인자 사용 - 

result = math(x: 10, y: 20) {
	return $0 + $1
}
print(result)
- 후행 클로저 : return 생략 -

result = math(x: 10, y: 20) { $0 + $1 }
print(result)

 


강의 출처 : https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

댓글