[swift] Swift 구조체의 타입 캐스팅에 대해 알려주세요.
Swift에서는 구조체(struct)에 대한 타입 캐스팅(Type Casting)을 사용하여 인스턴스의 타입을 확인하거나 서로 다른 타입으로 변환할 수 있습니다.
타입 확인 (Type Checking)
구조체 인스턴스의 타입을 확인하려면 is
키워드를 사용합니다.
if someInstance is SomeType {
// 해당 인스턴스는 SomeType 타입입니다.
} else {
// 해당 인스턴스는 SomeType 타입이 아닙니다.
}
다운캐스팅 (Downcasting)
슈퍼클래스 혹은 프로토콜로 선언된 구조체를 해당 서브클래스 타입으로 캐스팅할 때는 as?
나 as!
연산자를 사용합니다.
안전 다운캐스팅 (as?)
if let subclassInstance = someInstance as? SubclassType {
// 형식이 일치하면, 안전하게 SubclassType 로 다운캐스팅됩니다.
} else {
// 형식이 불일치하면, nil 이 반환됩니다.
}
강제 다운캐스팅 (as!)
let forcedSubclassInstance = someInstance as! SubclassType
// 형식이 일치한다고 가정하고, SubclassType 으로 강제로 다운캐스팅합니다.
타입 캐스팅을 위한 프로토콜 활용
프로토콜을 활용하여 인스턴스를 특정 프로토콜 타입으로 캐스팅할 수도 있습니다.
protocol SomeProtocol {
// 프로토콜 내용
}
struct SomeStruct: SomeProtocol {
// 구조체 내용
}
let protocolInstance: SomeProtocol = SomeStruct()
if let structInstance = protocolInstance as? SomeStruct {
// 프로토콜로부터 구조체로의 안전한 다운캐스팅
}
Swift의 구조체의 타입 캐스팅을 통해 유연하게 데이터를 다룰 수 있습니다.