В Swift мы можем написать следующую конструкцию:
class SomeClass {}
let metaMetatype: SomeClass.Type.Type = SomeClass.Type.self
Здесь metaMetatype не соответствует типу AnyObject (SomeClass.Type does). Строительство может быть даже дольше, если мы хотим:
let uberMetatype: SomeClass.Type.Type.Type.Type.Type.Type.Type.Type.Type.Type = SomeClass.Type.Type.Type.Type.Type.Type.Type.Type.Type.self
Являются ли эти конструкции имеющими смысл? Если SomeClass.Type.Type не объект, что это такое и почему мы можем его объявить?