[swift] as 연산자와 as? 연산자의 차이점

Swift에서 asas?는 서로 다른 역할을 수행하는 연산자입니다. 이 두 연산자의 주요 차이점을 살펴보겠습니다.

as 연산자

as 연산자는 다른 형식으로의 명시적인 형식 캐스팅(형변환)을 수행할 때 사용됩니다. 만약 형식 캐스팅이 실패할 경우, 런타임 오류가 발생합니다. 이 연산자를 사용하여 캐스팅한 값은 옵셔널 형식이 아닙니다.

let intValue: Int = 10
let doubleValue = intValue as Double // 컴파일 에러 발생

as? 연산자

as? 연산자는 옵셔널 형식의 형식 캐스팅을 수행합니다. 형식 캐스팅의 결과가 올바르지 않을 수도 있기 때문에, 캐스팅에 실패하더라도 런타임 오류가 발생하지 않습니다. 그 대신, 캐스팅 실패 시 결과는 nil이 됩니다.

let intValue: Int = 10
let doubleValue = intValue as? Double // 캐스팅 실패 시 doubleValue는 nil

asas? 연산자는 형변환 작업을 수행하면서 발생할 수 있는 오류에 대한 처리 방식에 있어서 주요한 차이가 있습니다. 올바르지 않은 형변환으로 인해 프로그램이 비정상적으로 종료될 가능성이 있는 경우에는 as? 연산자를 사용하는 것이 바람직합니다.

이상으로 Swift에서 asas? 연산자의 차이점에 대해 알아보았습니다.

참고 자료

관련 내용: Swift에서의 타입 캐스팅