我知道可以将类类型传递给
swift中的函数:
func setGeneric<T>(type: T.Type){ } setGeneric(Int.self)
但是我们如何从函数返回类型?写一些东西
func getGeneric<T>() -> T.Type{ return Int.self }
给出编译器错误“Int与T不相同”.那么可以从swift函数返回类型吗?
编辑
一些解释.我有用于持久化的类(我正在使用领域),我有类作为包装在这个类周围.所有包装器都继承自RealmClassWrapper,它需要知道实际包装的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 } }
解决方法
你可以返回任何你想要的类型.
func getTypeOfInt() -> Int.Type { return Int.self } func getTypeOfBool() -> Bool.Type { return Bool.self }
如果类型不是根据参数确定的,或者返回值是不变的,则不需要引入通用的T类型.