Swift:如何从函数返回类的types

我知道有可能将类types传递给swift中的函数:

func setGeneric<T>(type: T.Type){ } setGeneric(Int.self) 

但是,我们如何从函数返回types? 写一些像

 func getGeneric<T>() -> T.Type { return Int.self } 

给编译器错误“Int与T不相同”。 那么是否有可能从一个快速函数返回types?

编辑
一些解释。 我有用于持久性的类(我正在使用Realm),我有类作为这个类的包装。 所有的包装器都从RealmClassWrapperinheritance,它需要知道它实际包装的Realm类。 所以,让我们说我有这个领域模型:

 class RealmTodo: RLMObject { dynamic var title = "" } 

和我的包装晚餐类看起来像这样:

 class RealmClassWrapper { private let backingModel: RLMObject //... func backingModelType<T>() -> T.Type{ fatalError("must be implemented") } } 

和实际的包装:

 class Todo: RealmClassWrapper { //some other properties func backingModelType<T>() -> T.Type{ return RealmTodo.self } } 

你可以返回任何你想要的types。

 func getTypeOfInt() -> Int.Type { return Int.self } func getTypeOfBool() -> Bool.Type { return Bool.self } 

如果types不是由参数确定的,或者返回是不变的,则不需要引入通用的Ttypes。

它适用于我修改你的function,如下所示:

 func getGeneric<T>(object: T) -> T.Type { return T.self } getGeneric(0) // Swift.Int 

你可以强制downcast(如!)如下

 func getGeneric<T>() -> T.Type { return Int.self as! T.Type } 

但是在function范围之外,您需要指明返回的types:

 var t:Int.Type = getGeneric() 

是的,这是可能的。 这里的问题是你说你的函数返回一个通用的T.type ,但你总是返回Int.type 。 由于T并不总是一个Int,编译器会产生一个错误。