【发布时间】:2020-11-22 10:38:33
【问题描述】:
我知道目前不可能使用具有关联类型的协议作为类型。您能否帮助解决这种情况:
protocol ProvidesResult {
associatedtype ResultType
func provideResult(input: String) -> ResultType
}
class IntProvider: ProvidesResult {
typealias ResultType = Int
func provideResult(input: String) -> ResultType {
//Logic
}
}
var resultProviders: [String: ProvidesResult]
我需要一个字典,其中键是字符串,值是符合“ProvidesResult”的类型。我需要它来使用provideResult 方法启动ResultProvider 的新实例。
【问题讨论】:
-
如果要混合类型,则需要声明字典 [String: Any] 或将其声明为 ResultType 的类型,即 [String: Int]
-
你需要一个类型橡皮擦,例如AnyProviderResult
标签: swift protocols associated-types