티스토리 뷰

iOS/Swift

Swift 문법 (10) - 클로저 (Closure)

포도 동 2020. 12. 9. 21:28

Swift에는 일종의 코드의 블럭인 '클로저'가 존재합니다.

클로저는 일급 시민이기 때문에 변수, 상수 등으로 저장할 수 있고 전달 인자로 전달이 가능합니다.

함수는 이름이 있는 클로저의 일종이라고 볼 수 있습니다.

 

- 클로저는 매개변수와 반환값을 가질 수 있습니다.

- in 이라는 키워드로 실행코드를 작성해줍니다.

{ (매개변수) -> 반환타입 in

 // 실행코드
 
}
// sum이라는 상수에 클로저를 할당
let sum: (Int, Int) -> Int = { (a: Int, b: Int) in
    return a + b
}

let sumResult: Int = sum(1, 2)
print(sumResult) // 3 출력

- 클로저는 함수의 전달인자로 사용할 수 있습니다.

- 주로 함수의 실행이 완료된 다음에 실행하는 용도로 많이 사용됩니다.

let add: (Int, Int) -> Int
add = { (a: Int, b: Int) in
    return a + b
}

let substract: (Int, Int) -> Int
substract = { (a: Int, b: Int) in
    return a - b
}

func calculate(a: Int, b: Int, method: (Int, Int) -> Int) -> Int {
    return method(a, b)
}

var calculated: Int

calculated = calculate(a: 50, b: 10, method: add)

print(calculated) // 60 출력

calculated = calculate(a: 50, b: 10, method: substract)

print(calculated) // 40 출력

- 함수를 호출할 때 클로저를 작성하여 전달할 수도 있습니다.

calculated = calculate(a: 50, b: 10, method: { (left: Int, right: Int) -> Int in
    return left * right
})

 

* [부스트코스] iOS 프로그래밍을 위한 스위프트 기초 학습 후 정리한 내용입니다.

'iOS > Swift' 카테고리의 다른 글

Swift - protocol  (0) 2021.04.25
Swift 문법 (11) - 클로저 (Closure) 고급  (0) 2020.12.13
Swift 문법 (9) - 열거형  (0) 2020.12.08
Swift 문법 (8) - 구조체(Struct), 클래스(Class)  (0) 2020.12.07
Swift 문법 (7) - 옵셔널  (0) 2020.12.06
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함