프로그램이나 일부 경우를 이해하려고 할 때 실제로 어떤 유형인지 알아내는 것이 유용합니다. 디버거가 일부 유형 정보를 표시 할 수 있다는 것을 알고 있으며 일반적으로 유형 유추에 의존하여 해당 상황에서 유형을 지정하지 않아도 될 수는 있지만 여전히 Python과 같은 것을 원합니다.type()
dynamicType ( 이 질문 참조 )
업데이트 : 이것은 최신 버전의 Swift에서 변경되었으며 obj.dynamicType
이제 동적 유형의 인스턴스가 아닌 유형에 대한 참조를 제공합니다.
이것은 가장 유망한 것으로 보이지만 지금까지 실제 유형을 찾을 수 없었습니다.
class MyClass {
var count = 0
}
let mc = MyClass()
# update: this now evaluates as true
mc.dynamicType === MyClass.self
또한 새로운 객체 인스턴스화하는 클래스 참조를 사용하여 시도 하지 작업을하지만, 이상하게 나에게 내가 추가해야합니다라는 오류 준 required
이니셜 라이저 :
공장:
class MyClass {
var count = 0
required init() {
}
}
let myClass2 = MyClass.self
let mc2 = MyClass2()
그래도 주어진 객체의 유형을 실제로 발견하는 작은 단계 만 있습니다.
편집 : 나는 지금 관련이없는 많은 세부 사항을 제거했습니다. 관심이 있다면 편집 기록을보십시오 :)
print(mc)
또는 어딘가에 클래스 이름이 포함 dump(mc)
된 요약 ( toString(mc)
또는 에서 가져올 수 있음 reflect(mc).summary
) 을 인쇄합니다 . 그러나 클래스 이름을 직접 얻는 방법은 명확하지 않습니다.