2015-08-15 2 views
4

Можно ли передать класс в качестве параметра функции? В настоящее время у меня есть базовый класс, который я буду называть BaseClass. Прямо сейчас, вот что я могу сделать:Класс как функциональный параметр

func someFunction(instanceParameter: BaseClass) { 
    // code 
} 

Параметр будет некоторый класс, который наследует от BaseClass. Однако я хотел бы передать тип класса в качестве параметра. Вот некоторые псевдо-код:

func someFunction(classParameter: Class) { 
    // code 
} 

Параметр будет ClassThatInheritsFromBaseClass вместо экземпляра ClassThatInheritsFromBaseClass.

Кроме того, можно ли ограничить параметр класса классами, наследующими от BaseClass? Псевдокод ниже показывает, что я имею в виду.

func someFunction(classParameter: BaseClass_Class_Not_Instance) { 
    // code 
} 
+0

Это может помочь вам http://stackoverflow.com/questions/24049673/swift-class-introspection-generics –

ответ

2

Вы ищете metatype type - .Type:

func someFunction(classParameter: Class.Type) { 
    // code 
} 

Вы можете быть в состоянии ограничить только подклассов, используя дженерики, но я не проверял это только пока:

func someFunction<T: BaseClass where T != BaseClass>(classParameter: T.Type) { ... } 
Смежные вопросы