首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何快速地编写可扩展的协议

如何快速地编写可扩展的协议
EN

Stack Overflow用户
提问于 2022-03-24 20:41:24
回答 1查看 49关注 0票数 3

是否有一种方法可以使自定义协议像标准HashableEquatableCodable等传播,即当struct/class的所有属性都符合该协议时,struct/class本身就可以符合该协议。

假设我有这样一个简单的协议:

代码语言:javascript
复制
protocol State {
    init()
}

假设我有两个结构:

代码语言:javascript
复制
struct State1: State {}
struct State2: State {}

它们符合协议,然后我想要另一个符合我的协议的struct,如下所示:

代码语言:javascript
复制
struct AppState: State {  // error: Type 'AppState' does not conform to protocol 'State'
    let state1: State1
    let state2: State2
}

理论上,如果所有属性都有一个空的init(),那么在AppState结构中隐式地实现init应该没有问题。但是编译器只理解AppState中的显式AppState。那么,有什么方法可以增强我的协议State来实现这个功能呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-24 20:48:29

不幸的是,不,这在Swift目前是没有意义的。协议的自动一致性目前仅限于直接在编译器中实现(例如,请参阅implementation for CodableEquatable and Hashable);您能够连接到此机制的唯一方法是向编译器添加直接支持--如果您愿意分叉编译器并使用它编译所有代码,则是可行的,但这是一个很大的飞跃。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71609174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档