struct ExampleMetaType {
static let identifier = "ExampleMetaType"
let name: String
let age: Int
}
let example = ExampleMetaType(name: "이건준", age: 25)
example.name // "이건준"
ExampleMetaType.identifier // "ExampleMetaType"
type(of: example).init(name: "이건준", age: 25)
type(of: example).name // "이건준"
type(of: example).identifier // "ExampleMetaType"
func exampleMetaType(metaType: ExampleMetaType.Type) {
}
exampleMetaType(metaType: ExampleMetaType.self)
우리가 여태 클래스프로퍼티나 생성자에 접근할때는 컴파일러가 이를 허용해준것이지, 타입은 말 그대로 타입이름일뿐 타입오브젝트 즉 메타타입의 인스턴스가 아니기때문에 .self가 필요한 것이다 !!
ExampleMetaType.identifier
ExampleMetaType.self.identifier