You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中使Array遵循Storable协议的问题求助

解决Array遵循自定义Storable协议的兼容问题

问题根源

  • 当你写extension Array: Storable where Element: Storable时,它仅支持元素为具体Storable类型的数组(比如[String])。但[Storable]本质是[any Storable],这里的any Storable是存在类型,它本身并不遵循Storable协议,因此会触发Type 'any Storable' cannot conform to 'Storable'错误。
  • 若改为extension Array: Storable where Element == Storable,则仅匹配[any Storable]类型的数组,无法覆盖[String]这类具体元素的数组,导致'y()' requires the types 'String' and 'any Storable' be equivalent错误。

解决方案

同时添加两个扩展,分别覆盖两种场景:

protocol Storable {
}

extension String: Storable {
}

// 处理元素为具体Storable类型的数组
extension Array: Storable where Element: Storable {
}

// 处理元素为any Storable的数组
extension Array: Storable where Element == any Storable {
}

这样修改后,[String]会匹配第一个扩展,[Storable](即[any Storable])会匹配第二个扩展,两种数组类型都能正确遵循Storable协议。

内容的提问来源于stack exchange,提问作者woodipw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 12:23:23