有没有一种方法可以使自定义协议像标准Hashable
、Equatable
、Codable
等一样传播,即当struct
/class
的所有属性都符合该协议时,struct
/class
本身就可以符合该协议.
假设我有这样一个简单的协议:
protocol State {
init()
}
假设我有两个 struct :
struct State1: State {}
struct State2: State {}
他们符合协议,然后我想再有struct
个符合我的协议,像这样:
struct AppState: State { // error: Type 'AppState' does not conform to protocol 'State'
let state1: State1
let state2: State2
}
理论上,如果所有属性都有一个空init()
,那么在AppState
struct 中隐式实现init应该没有问题.但编译器只理解AppState
中的显式init()
.那么,有没有一种方法可以增强我的State
协议,使其具有该功能?