swift - 是否有可能在 Swift 的枚举中将多个案例分组并表示为另一个案例?

标签 swift enums switch-statement

这就是我的意思。

enum Device {
    case iPhone_13Pro, iPhone_12Pro
    
    case iPadPro_129
    case iPadPro_11
}

// Hypothetical Scenario
enum Device_Group {
    case iPhones
    case iPads
}

有没有办法按照上面的方法来表示像这样的一组特定情况(它可以是另一个枚举或同一枚举中的不同情况 - 这样我就可以像下面那样做?

// DO THIS
switch device {
   case iPhones:
        print("These are iPhones")

   case iPads:
        print("These are iPads")
}

// INSTEAD OF THIS
switch device {
   case .iPhone_13Pro, .iPhone_12Pro:
        print("These are iPhones")

   case .iPadPro_129, .iPadPro_11:
        print("These are iPads")
}

我不知道这是否是一个奇怪的问题,但我发现在使用 switch 语句时将多个案例分组有一定的好处。对此有任何建议将不胜感激。提前致谢。

最佳答案

您可以使用嵌套枚举和带参数的案例

enum Devices {
    case phone(iPhone)
    case tablet(iPad)

    enum iPhone {
        case phone7
        case phoneX
    }

    enum iPad {
        case mini
        case pro
    }
}

let randomDevice = Devices.phone(.phone7)

switch randomDevice {
    case .phone: 
        print("Its a phone")
    default:
        break
}

// prints "Its a phone"

关于swift - 是否有可能在 Swift 的枚举中将多个案例分组并表示为另一个案例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69254446/

相关文章:

c# - SortedDictionary ContainsKey方法错误?

java - 尝试使用枚举作为与 thymeleaf 一起使用的输入

c - 使用 struct 和 switch 的意外循环

java - 计数字符

ios - 为什么 iOS 模拟器在我旋转设备时显示黑屏?

swift - 找不到接受提供的参数的 '/' 的重载

ios - didFinishPickingImage 不会执行 segue

java - 如何访问 playframework 模板中的枚举字段

java - switch 语句返回 null

ios - DZNEmptyDataSet 与 RxSwift 中的 tableview 绑定(bind)不兼容。有人能够使它工作吗?