protocol resetable: class { func reset()}
现在,inputVIEws中的所有内容也符合resetable协议,所以我想要做的基本上是循环并在每个成员上调用reset().如果我这样做,那么它将起作用:
for input in inputVIEws { (input as! resetable).reset() }
但是我用以下方法扩展了Array:
extension Array where Element:resetable { func resetAll() { forEach({let resetableVIEws = inputVIEws.map({.reset() }) }}protocol resettable { func reset() -> resettable}struct resettableArray { var array: [resettable] init(_ array:[resettable]) { self.array = array } func resetAll() -> [resettable] { return array.map( { .reset() } ) }}class dummy: resettable { func reset() -> resettable { print("reset one element") return self }}let resettableDummy = resettableArray([dummy(),dummy()])resettableDummy.resetAll()as! resetable }) resetableVIEws.resetAll()
所以我真正希望能够完成的是downcast inputVIEws并调用resetAll().
我试过了:
但它表示不支持使用resetable作为符合resetable的具体类型
如何通过使用resetAll()实现此目的?
解决方法 我希望我已经理解了问题/规格.从Rob NAPIer自由采取,如何: 总结以上是内存溢出为你收集整理的swift – 无法将数组成员转发为协议类型全部内容,希望文章能够帮你解决swift – 无法将数组成员转发为协议类型所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)