sanichdaniel의 iOS 개발 블로그
Self Type 본문
Self는 자기 자신의 타입을 가리키는 문법적 슈가 이다.
자신의 타입을 반복하거나, 명시 안하고 사용할수 있다
1. 프로토콜에서 Self 타입은 프로토콜을 채택할 타입을 가리킨다.
2. struct, class, enum 에서 Self 타입은 현재 자신이 속해있는 선언의 타입
class Superclass {
func f() -> Self { return self }
}
let x = Superclass()
print(type(of: x.f()))
// Prints "Superclass"
class Subclass: Superclass { }
let y = Subclass()
print(type(of: y.f()))
// Prints "Subclass"
let z: Superclass = Subclass()
print(type(of: z.f()))
// Prints "Subclass"
z 에서 Self는 런타임 타입을 리턴하는것을 알 수 있다
만약 타입 선언이 nested 된 경우 Self는 가장 안쪽에 선언된 타입을 가리킨다.
Self 타입은 type(of:) 함수가 리턴하는 타입과 같다!
사용 예시
Self 는 현재 자신의 타입 A
.self 는 자신의 타입의 값
class A {
static var key: String {
return String(describing: Self.self)
}
}
'swift' 카테고리의 다른 글
enum vs protocol as UseCase (0) | 2020.09.28 |
---|---|
Type Erasure (0) | 2020.09.28 |
initializer (0) | 2020.09.26 |
type(of:) (0) | 2020.09.05 |
Metatype (0) | 2020.09.03 |