반응형
변수, 상수, 전달인자로 전달 가능
함수도 클로저의 일종이라 보면 된다.
// 클로저
// in 이라는 키워드로 매개변수와 코드 분리
// 예시
var sum: (Int, Int) -> Int = { (a:Int, b:Int) -> Int in
return a + b
}
// 콜백으로도 사용이 가능하다/
// a, b를 받아 method로 전달된 클로저에 전달해 계산
func sumContainer(c: Int, d: Int, method: (Int, Int) -> Int) -> Int {
return method(c, d)
}
print(sumContainer(c: 1, d: 2, method: sum))
// 후행 클로저
// 함수의 마지막 전달 인자가 클로저이면 빼낼수 있음
var res: Int = sumContainer(c: 1, d: 2) { (ex1: Int, ex2: Int) in
return ex1 + ex2
}
// 매개변수를 단축인자 이름으로 생략해 사용 가능
res = sumContainer(c: 3, d: 4, method: {
return $0 + $1
})
// 클로저의 마지막 줄은 return을 쓰지 않아도 컴파일러가 알아들음
// 위 축약을 모두 합치면 아래처럼 간결하게 된다.
res = sumContainer(c: 5, d: 6) { $0 + $1 }
print(res) // 11
반응형
'iOS > Swift' 카테고리의 다른 글
[Swift] 클래스의 생성자와 소멸자 (0) | 2022.01.24 |
---|---|
[Swift] 클래스의 상속 (0) | 2022.01.24 |
[Swift] 열거형 (0) | 2022.01.23 |
[Swift] 구조체, 클래스, 프로퍼티, 프로퍼티 감시자 (0) | 2022.01.22 |
[Swift] 옵셔널에 대해 (0) | 2022.01.22 |