iOS/Swift

클로저 1편

밤새는 탐험가89 2024. 2. 6. 11:54

 

클로저란?

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

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

 

아래 코드에서 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
 }

 

'iOS > 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