是否有一种快速创建自定义协议的方法,并通过声明一些有关如何修改规则的规则使所有属性符合自定义协议,从而使编译器自动合成一致性。结合属性?
现在,标准的Codable
,Equatable
和Hashable
协议使用了这种行为,但是我不确定我们是否能够声明自己的协议来表现这种行为。
我想用一个简单的例子来说明我要实现的例子。我创建了一个名为Interpolatable
protocol Interpolatable {
func interpolate(to endValue: Self, at ratio: CGFloat) -> Self
}
我想做的是声明一个名为Keyframe: Interpolatable
的结构,它仅存储符合Interpolatable
协议的属性。
struct Keyframe: Interpolatable {
let customValue1: CustomValueType1 //conforms to Interpolatable
let customValue2: CustomValueType2 //conforms to Interpolatable
}
现在,我希望能够在其他地方声明一种通用方法,以告诉编译器如何使像这样的类型实现必要的功能以符合Interpolatable
协议。
这可能吗?当然感觉很 Schwifty 。