다음의 이유는 is
이 false로 설정되어 있습니까?Swift : 하위 클래스의 기본 클래스 및 수퍼 클래스를 확인하는 방법
class Person : BaseClass { ... }
class Parent : Person { ... }
.
.
let parent = Parent()
print("parent is BaseClass: \(parent.self is BaseClass)")
// this prints 'parent is BaseClass: false'
하위 클래스의 기본 클래스 또는 수퍼 클래스를 어떻게 확인할 수 있습니까? 특히 개체가 서브 클래 싱 된 깊이를 모른다면.
UPDATE : 다음 내 실수
print("parent is BaseClass: \(parent.self is BaseClass)")
// this prints 'parent is BaseClass: true'
사실이다하지만이 사람은
class GenericClass<T: BaseClass> { }
.
let myGeneric = GenericClass<Parent>()
print("myGeneric is GenericClass<BaseClass>: \(myGeneric.self is GenericClass<BaseClass>)")
// this prints 'myGeneric is GenericClass<BaseClass>: false'
운동장에서 나는 다음과 같은 경고 받고 있어요되지 않습니다 :
Playground.playground을 : 'GenericClass'에서 으로 관련이없는 'GenericClass'유형이 항상 실패합니다.
그렇다면 기본 클래스에 대한 일반적인 관계를 어떻게 확인할 수 있습니까?
제네릭의 부적절한 사용과 같은 느낌입니다. 해결해야하는 문제는 무엇이 문제라고 생각합니까? –
그럼 간단합니다. GenericClass 및 모든 하위 클래스를 사용하여 무언가를 수행해야합니다. 런타임에 나는 관리 할 수있는 객체의 클래스를 모른다. 그래서 나는 그것으로 정확한 물건을 할 수 있는지 확인해야합니다. Swift는 일반적인 상속 여부를 확인할 수 없으므로 나에게 들립니다. 컴파일시에도 문제가 없어야합니다. 무엇이 나를 'is'연산자를 확장시키는 아이디어로 이끌어줍니다. –
Dareon
'GenericClass'의 하위 클래스를 보여줄 수 있습니까? 왜냐하면 당신은 당신의 모범을 전혀 갖고 있지 않기 때문입니다. –