[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의 구조체와 열거형에서 클로저를 활용하는 방법에 대해 알아보았습니다.
참고문헌: