我有一系列不同的结构,所有实现Equatable协议,并试图将其传递给期望集合的函数where T.Iterator.Element: Equatable.我知道如何通过使用类来解决这个问题,只需创建一个class Vehicle: Identifiable, Equatable,然后制作Car和Tractor实现Vehicle.但是,我想知道使用结构和协议是否可行?
这是我正在尝试做的一个人为的例子
//: Playground - noun: a place where people can play
protocol Identifiable {
var ID: String { get set }
init(ID: String)
init()
}
extension Identifiable {
init(ID: String) {
self.init()
self.ID = ID
}
}
typealias Vehicle = Identifiable & Equatable
struct Car: Vehicle {
var ID: String
init() {
ID = ""
}
public static func ==(lhs: Car, rhs: …Run Code Online (Sandbox Code Playgroud)