gpt4 book ai didi

iphone - 为具有嵌套枚举值的枚举采用可平等协议(protocol)

转载 作者:可可西里 更新时间:2023-11-01 01:00:06 25 4
gpt4 key购买 nike

假设我们有这个数据结构:

enum Vehicle: Equatable {

enum Car {
case BMW(Int)
case Audi(Int)
}

enum Bike {
case Ducatti(Int)
case Honda(Int)
}

}

代表各种车辆,其马力作为相关值。

我正在尝试遵守 Equatable 协议(protocol),以便能够执行 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
}
}

但是编译器提示无效模式

那么对于包含嵌套枚举和关联值的枚举,我们如何正确地遵守 Equatable 协议(protocol)?

最佳答案

正如其他人所指出的,您对嵌套枚举的定义不会创建 Vehicle 的情况。它们只是定义了两种类型,除了它们的名字之外,彼此没有任何关系。您尝试执行的操作如下所示:

enum Vehicle: Equatable {
enum CarType {
case BMW(Int)
case Audi(Int)
}

enum BikeType {
case Ducatti(Int)
case Honda(Int)
}

case Car(CarType)
case Bike(BikeType)
}

func ==(a: Vehicle, b: Vehicle) -> Bool {
switch (a, b) {
case (.Car(.BMW(let hp1)), .Car(.BMW(let hp2))):
return hp1 == hp2
default:
return false
}
}

let bmw1 = Vehicle.Car(.BMW(1))
let bmw2 = Vehicle.Car(.BMW(1))
let bmw3 = Vehicle.Car(.BMW(2))
bmw1 == bmw2 // true
bmw2 == bmw3 // false

关于iphone - 为具有嵌套枚举值的枚举采用可平等协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35505655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com