大佬教程收集整理的这篇文章主要介绍了ios – Swift – Typealias字典,其值为实现通用协议,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
typealias Storage = [String: Equatable]
我想使用类型[String:Equatable]作为协议中的变量,例如:
protocol StorageModel { var storage: Storage { get set } init(storage: StoragE) }
错误:
typealias Storage = [String:Equatable]
在这种情况下,错误告诉你的是因为Equatable包含func ==(lhs:Self,rhs:Self) – > Bool,特别是lhs:Self,Equatable不能被使用,除非作为泛型的约束:
class Generic<T:Equatable> { ... }
如果没有关于您要实现的目标以及如何使用StorageModel的更多详细信息,我能想到的最好的是:
protocol Matches { typealias T func matches(t:T) -> Bool } protocol StorageModel { typealias T var storage: [String:T] { get set } init(storage:[String:T]) } extension Int : Matches { func matches(target:int) -> Bool { return self == target } } class MyClass <T:Matches> { var model = [String:T]() }
另一种可能性是使用泛型而不是协议:
class StorageModel <T:Equatable> { var storage: [String:T] init(storage:[String:T]) { self.storage = storage } }
以上是大佬教程为你收集整理的ios – Swift – Typealias字典,其值为实现通用协议全部内容,希望文章能够帮你解决ios – Swift – Typealias字典,其值为实现通用协议所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。