Nik*_*pov 33 generics ios swift
我知道可以将类类型传递给swift中的函数:
func setGeneric<T>(type: T.Type){ }
setGeneric(Int.self)
Run Code Online (Sandbox Code Playgroud)
但是我们如何从函数中返回类型呢?写点像
func getGeneric<T>() -> T.Type {
return Int.self
}
Run Code Online (Sandbox Code Playgroud)
给出编译器错误"Int与T不相同".那么可以从快速函数返回类型吗?
编辑
一些解释.我有用于持久化的类(我正在使用Realm),我有一些类充当这个类的包装器.所有包装器都继承了RealmClassWrapper
需要知道它实际包含的Realm类.那么就说我有这个领域模型:
class RealmTodo: RLMObject {
dynamic var title = ""
}
Run Code Online (Sandbox Code Playgroud)
我的包装器晚餐类看起来像这样:
class RealmClassWrapper {
private let backingModel: RLMObject
//...
func backingModelType<T>() -> T.Type{ fatalError("must be implemented") }
}
Run Code Online (Sandbox Code Playgroud)
和实际的包装:
class Todo: RealmClassWrapper {
//some other properties
func backingModelType<T>() -> T.Type{ return RealmTodo.self }
}
Run Code Online (Sandbox Code Playgroud)
GoZ*_*ner 31
您可以返回任何您想要的类型.
func getTypeOfInt() -> Int.Type { return Int.self }
func getTypeOfBool() -> Bool.Type { return Bool.self }
Run Code Online (Sandbox Code Playgroud)
如果类型不是从参数确定的,或者返回是常量,则不需要引入泛型T
类型.
当我修改你的函数时,它可以工作:
func getGeneric<T>(object: T) -> T.Type {
return T.self
}
getGeneric(0) // Swift.Int
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25457 次 |
最近记录: |