본문 바로가기

Swift

클로저 1편

 

클로저란?

스위프트의 함수 정의 구문에서 목적에 따라 불필요한 부분을 제거

최대한 단순한 형태로 일회용 함수 역할을 하기 위한 객체

 

아래 코드에서 animations 매개변수로 exec의 함수를 받음 

근데 exec라는 함수는 한 번만 사용되는 일회용 함수임 

 

UIView.animate(withDuration: TimeInterval(0.15), animations: exec)

 

 

이와 같이 일회용 함수를 매번 만들기 귀찮기 때문에 

animations의 타입과 동일한 경우라면

exec 함수 대신 클로저를 넣음 

 

 

클로저 만들기 

 func add(value1: Int, value2: Int) -> Int {
     let result = value1 + value2
     return result
 }

 

 

이미 함수라는 것을 알고 있기 때문에 

"func" 키워드 삭제 

 

 add(value1: Int, value2: Int) -> Int {
     let result = value1 + value2
     return result
 }

 

 

일회용 함수 이기 때문에 

재사용을 위한 함수명은 생략 가능 

 

 (value1: Int, value2: Int) -> Int {
     let result = value1 + value2
     return result
 }

 

 

매개변수 타입을 통해 함수 형식이 이미 정의 되어 있다면

매개변수 타입과 반환 타입 생략 가능 

 

 (value1, value2) {
     let result = value1 + value2
     return result
 }

 

 

입력받는 인자값의 순서가 함수 타입에 정의되어 있으므로 

매개변수 자체를 생략, 대신 매개변수에 $0, $1로 표현

 

 {
     let result = $0 + $1
     return result
 }

 

여기서 결과값만 반환하면 되기 때문에 

return 구문 생략 가능 

 

주로 아래 코드와 같이 실무에서 사용 

 

 {
     $0 + $1
 }

 

 

아래 코드서부터 사실 클로저로 사용함

 (value1: Int, value2: Int) -> Int {
     let result = value1 + value2
     return result
 }
 
 
 {
     (value1: Int, value2: Int) -> Int in 
     let result = value1 + value2
     return result
 }

 

'Swift' 카테고리의 다른 글

클로저 3편  (0) 2024.02.10
클로저 2편  (2) 2024.02.08
접근제어  (0) 2024.02.05
인스턴스 생성 및 소멸 6편 (인스턴스 소멸)  (0) 2024.02.02
인스턴스 생성 및 소멸 5편 (함수를 사용한 프로퍼티 기본값 설정)  (0) 2024.02.01