通过阅读Swift中的泛型函数,我发现可以通过要求参数是给定类C的子类或实现给定协议P来对参数施加一些约束。 但是我想知道是否有一种方法可以同时要求两者。我还没有发现任何东西。
有人知道吗?
答案 0 :(得分:3)
实际上,您可以这样做。
如果您迅速看到了Codable
,则实际上是Decodable
和Encodable
typealias Codable = Decodable & Encodable
因此在某些功能中,如果您将通用T用作可编码
struct StructOfCodable<T:Codable>: Codable {
....
}
这里是示例
protocol Test {}
class TClass {
}
typealias Common = Test & TClass
func generic <T:Common>(method:T) {
}
另一种方法是协议和类都可以具有超类。这样您就可以创建通用协议
喜欢
protocol CommonInProtocolAndStruct { }
protocol ProtocolUsedAsConstraint:CommonInProtocolAndStruct {}
struct StructUsedAsConstraint:CommonInProtocolAndStruct {}
您可以使用CommonInProtocolAndStruct
作为通用约束
答案 1 :(得分:1)
您可以使用<div id="parent">
<div id="child-left"></div>
<div id="child-right"></div>
</div>
子句添加任意数量的类型约束。例子:
where