[swift] 구조체와 열거형의 클로저 활용 방법

서론

Swift의 구조체(Struct)와 열거형(Enum)은 클로저(Closure)를 포함할 수 있는 능력이 있습니다. 이 능력을 활용하여 데이터 모델링과 유연한 동작을 구현할 수 있습니다. 이번 글에서는 구조체와 열거형에서 클로저를 어떻게 활용하는지 알아보겠습니다.

구조체에서의 클로저 활용

구조체에서 클로저를 활용하는 가장 일반적인 방법은 속성으로 클로저를 저장하는 것입니다.

struct MyStruct {
    var closureProperty: () -> Void
}

클로저가 함수를 저장하고 나중에 실행되도록 하거나, 특정 동작을 클로저로 작성한 후 구조체 내부에서 실행할 수 있습니다.

struct MyStruct {
    var closureProperty: () -> Void

    func performClosure() {
        closureProperty()
    }
}

let myStruct = MyStruct(closureProperty: {
    print("Hello from closure")
})

myStruct.performClosure() // "Hello from closure" 출력

열거형에서의 클로저 활용

열거형에서 클로저를 활용하는 경우에는 각 case 내부에서 클로저를 정의하고 해당 case가 사용될 때 클로저를 실행할 수 있습니다.

enum MyEnum {
    case actionA
    case actionB(() -> Void)
}

let myEnumA = MyEnum.actionA
let myEnumB = MyEnum.actionB({
    print("Hello from enum closure")
})

switch myEnumA {
case .actionA:
    print("Perform action A")
case .actionB(let closure):
    closure() // 해당 클로저 실행
}
// "Perform action A" 출력

switch myEnumB {
case .actionA:
    print("Perform action A")
case .actionB(let closure):
    closure() // 해당 클로저 실행
}
// "Hello from enum closure" 출력

결론

구조체와 열거형에서 클로저를 포함하여 다양한 동작을 정의하고 활용할 수 있습니다. 이를 통해 유연하고 강력한 코드를 작성할 수 있으며, 데이터 모델링과 비동기 동작 처리 등 다양한 상황에서 유용하게 활용할 수 있습니다.

이상으로 Swift의 구조체와 열거형에서 클로저를 활용하는 방법에 대해 알아보았습니다.

참고문헌: