Вы можете написать что-то вроде этого:
switch aself {
case is SA.Type:
print("is SA.Type")
default:
print("Unknown type")
}
Или это:
switch ObjectIdentifier(aself) {
case ObjectIdentifier(SA.self):
print("is SA.Type")
default:
print("Unknown type")
}
(некоторый код, объясняющий другое поведение для подклассов, как я прокомментировал ниже.)
class CA: A {}
class CAA: CA {}
let caaself: A.Type = CAA.self
switch caaself {
case is CA.Type:
print("is CA.Type") //->is CA.Type
default:
print("Unknown type")
}
switch ObjectIdentifier(caaself) {
case ObjectIdentifier(CA.self):
print("is CA.Type")
default:
print("Unknown type") //->Unknown type
}
Возможно, вам придется использовать ObjectIdentifier
, если вы хотите исключить подклассы в вашем сопоставлении типов. (Могут быть и другие пути, но сейчас я не думаю ни о каких.)