클로저란?
스위프트의 함수 정의 구문에서 목적에 따라 불필요한 부분을 제거
최대한 단순한 형태로 일회용 함수 역할을 하기 위한 객체
아래 코드에서 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 |