본문 바로가기

개발

Swift 클로저 (Closures in Swift)

728x90

Swift 클로저 (Closures in Swift)

Swift 클로저는 코드 블록을 캡슐화하고 함수처럼 사용할 수 있는 강력한 기능입니다. 클로저는 매개변수, 반환값, 캡처된 값을 가질 수 있으며, 다양한 상황에서 코드를 간결하고 효율적으로 작성하는 데 도움이 됩니다.

1. 클로저 기본 구조

{ (parameters) -> returnType in

    // 코드 블록

}
  • {}: 클로저 블록을 나타냅니다.
  • (parameters): 클로저의 매개변수 목록 (선택 사항)
  • ->: 클로저의 반환값 타입 (선택 사항)
  • // 코드 블록: 클로저 내에서 실행되는 코드

예시:

let greeting = { (name: String) in

    print("안녕하세요, \(name)님!")

}



greeting(name: "지민")   // "안녕하세요, 지민님!"

 

2. 간소화된 클로저 표현

  • 생략 가능한 요소들을 생략하여 코드를 더욱 간결하게 작성할 수 있습니다.

예시:

let greeting = { name in

    print("안녕하세요, \(name)님!")

}



greeting(name: "지민")   // "안녕하세요, 지민님!"

 

  • 매개변수 이름과 타입을 생략하고, $ 기호를 사용하여 매개변수에 직접 접근할 수 있습니다.

예시:

let greeting = { $0 in

    print("안녕하세요, \($0)님!")

}



greeting(name: "지민")   // "안녕하세요, 지민님!"

3. 클로저 매개변수 및 반환값

  • 클로저는 여러 개의 매개변수를 가질 수 있으며, 매개변수에 기본값을 설정할 수 있습니다.
  • 클로저는 값을 반환할 수 있으며, 여러 개의 값을 반환하려면 튜플을 사용할 수 있습니다.

예시:

let calculateSum = { (x: Int, y: Int) -> Int in

    return x + y

}



let sum = calculateSum(x: 10, y: 20)

print(sum)   // 30

 

4. 캡처된 값 (Captured Values)

  • 클로저는 함수 실행 시점의 환경에서 값을 캡처할 수 있습니다.
  • 캡처된 값은 클로저 내에서 사용되고 변경될 수 있으며, 함수가 종료된 후에도 유지됩니다.

예시:

var counter = 0



let countingClosure = {

    counter += 1

    print(counter)

}



countingClosure()   // 1

countingClosure()   // 2

countingClosure()   // 3

 

5. 클로저 활용

  • 클로저는 다양한 상황에서 활용될 수 있습니다.
  • UI 이벤트 처리
  • 비동기 작업 처리
  • 알고리즘 구현
  • 데이터 처리 및 변환

6. 참고 자료

 

'개발' 카테고리의 다른 글

Swift 구조체와 클래스 (Structures and Classes)  (0) 2024.07.05
Swift 열거형 (Enumerations)  (0) 2024.07.05
Swift 함수 (Functions)  (0) 2024.07.05
Swift 제어 흐름 (Control Flow)  (0) 2024.07.05
Swift 콜렉션 타입 (Collection Types)  (0) 2024.07.05