[swift] 타입 내부에서의 Self 사용 방법
Swift에서는 Self
키워드를 사용하여 타입 내부에서 현재 타입 자체를 참조할 수 있습니다. Self
는 현재 타입을 나타내는데, 주로 프로토콜과 함께 사용됩니다.
Self 키워드 사용 예시
protocol Vehicle {
static func displayClassName()
}
extension Vehicle {
static func displayClassName() {
print("Class name: \(Self.self)")
}
}
class Car: Vehicle {
class func showClassName() {
displayClassName()
}
}
Car.showClassName() // 출력: Class name: Car
위 예시에서는 Self
를 사용하여 프로토콜 내에서 현재 타입을 참조하고, 상속받은 클래스에서 해당 프로토콜 메서드를 호출할 때 정적 디스패치(static dispatch)를 보여줍니다.
Self
는 타입 내부에서 현재 타입을 가리킬 때 주로 사용되며, 이를 활용하여 코드를 더 유연하게 작성할 수 있습니다.
Self 키워드와 제네릭(Generic) 타입
Self
키워드는 제네릭 타입 내에서도 유용하게 사용될 수 있습니다. 제네릭 타입을 사용하는 경우, Self
를 통해 현재 실제 타입을 참조할 수 있습니다.
class Stack<T> {
var elements = [T]()
func push(_ element: T) {
elements.append(element)
}
func pop() -> T? {
return elements.popLast()
}
func displayType() {
print("Stack type: \(Self.self)")
}
}
let intStack = Stack<Int>()
intStack.push(5)
intStack.displayType() // 출력: Stack type: Stack<Int>
위 예시에서는 Self
를 사용하여 제네릭 타입 내에서 현재 실제 타입을 출력하는 방법을 보여줍니다.
Swift에서 Self
키워드는 타입 내부에서 현재 타입을 참조하고 싶을 때 유용하게 활용될 수 있으며, 프로토콜과 제네릭 타입과 같이 다양한 상황에서 유연한 활용이 가능합니다.
자세한 내용은 공식 Swift 문서를 참고하십시오.