假設我們有這樣的數據結構:採用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