iOS/Swift

[Swift] 클로저

유훈 | Yuhun 2022. 1. 23. 02:02
반응형

변수, 상수, 전달인자로 전달 가능

함수도 클로저의 일종이라 보면 된다.

// 클로저

// 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