假设我们有这样的数据结构:采用Equatable协议枚举具有嵌套枚举值
enum Vehicle: Equatable {
enum Car {
case BMW(Int)
case Audi(Int)
}
enum Bike {
case Ducatti(Int)
case Honda(Int)
}
}
表示各种车辆与他们的马力作为他们的相关联的值。
我试图符合Equatable
协议,以便能够执行Vehicle
等效,但没有成功。
我,试图:
func ==(a: Vehicle, b: Vehicle) -> Bool {
switch(a, b) {
case(let Car.BMW(hp1), let Car.BMW(hp2)):
return hp1 == hp2
default:
return false
}
}
但编译器抱怨invalid pattern
。
那么我们如何才能正确地符合Equatable
协议的枚举包含嵌套的枚举和相关的值?
目前尚不清楚,我认为汽车是一种有效的枚举 - 它肯定有没有实际的枚举值 - 所有你正在做的是声明两种类型... – Grimxn
这绝对有效。 '让价值= Vehicle.Car.BMW(2500)'工作正常。 – Thanos
不,'value'不是'Vehicle',而是'Vehicle.Car'。检查它的'.dynamicType' – Grimxn