Class as a function parameter

Is it possible to pass a class as a parameter to a function? I currently have a base class that I call BaseClass . Right now, here is what I can do:

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

The parameter will be some class that inherits from BaseClass . However, I would like to pass the class type as a parameter. Here are a few pseudo codes:

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

The parameter will be ClassThatInheritsFromBaseClass instead of an instance of ClassThatInheritsFromBaseClass .

Also, is it possible to limit the class parameter to classes that inherit from BaseClass ? The pseudo code below shows what I mean.

 func someFunction(classParameter: BaseClass_Class_Not_Instance) { // code } 
+4
source share
1 answer

You are looking for the type of meta tags - .Type :

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

You can restrict only subclasses using generics, but I have not tested this yet:

 func someFunction<T: BaseClass where T != BaseClass>(classParameter: T.Type) { ... } 
+2
source

All Articles