[swift] 옵셔널 타입의 클로저 사용하기

Swift에서는 클로저를 사용하여 함수를 변수로 다룰 수 있습니다. 클로저는 일련의 코드를 하나로 묶은 것으로, 작은 함수처럼 사용할 수 있습니다. 이 때, 변수의 타입으로 클로저를 사용하고자 할 때 옵셔널 타입을 고려해야 합니다.

옵셔널 타입은 값이 있을 수도 있고 없을 수도 있는 변수를 나타내기 위해 사용됩니다. 클로저를 옵셔널 타입으로 사용하면 해당 변수에 클로저가 할당되었는지 여부를 확인할 수 있습니다.

아래 예시를 통해 옵셔널 타입의 클로저를 사용하는 방법을 알아보겠습니다.

클로저 정의하기

let closure: (() -> Void)? = {
    print("Hello, world!")
}

위 코드에서, closure는 옵셔널 타입의 클로저입니다. () -> Void는 매개변수가 없고 리턴 값이 없는 클로저 타입을 나타냅니다. 클로저 내부의 코드는 “Hello, world!”를 출력하는 코드입니다.

클로저 실행하기

closure?()

위 코드에서는 closure 변수에 할당된 클로저를 실행합니다. closure?()의 형태는 옵셔널 체인을 사용하여 nil 값일 경우 클로저를 실행하지 않고 그냥 종료되도록 합니다.

클로저 값 확인하기

if closure != nil {
    print("closure is not nil")
} else {
    print("closure is nil")
}

클로저가 nil인지 확인하기 위해 closure 변수를 비교합니다. 값이 있을 경우 “closure is not nil”이 출력되고, nil일 경우 “closure is nil”이 출력됩니다.

위 예시에서는 클로저가 nil인지 여부를 확인했지만, 옵셔널 체이닝을 활용하여 클로저 내부의 코드를 호출하기 전에도 클로저의 값이 nil인지 여부를 확인할 수 있습니다.

결론

Swift에서 옵셔널 타입의 클로저를 사용하는 방법을 알아보았습니다. 클로저를 옵셔널 타입으로 선언하고 실행하기 전에 값을 확인하여 안정성을 확보할 수 있습니다. 이를 활용하여 다양한 상황에서 유연하게 변수로서의 클로저를 활용할 수 있습니다.

참고 자료