swift - 是否可以在 Swift 的枚举中将多个案例分组并表示为另一个案例?
问题描述
这就是我的意思。
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"
推荐阅读
- ios - Swift 5:转义闭包捕获'inout'参数
- reactjs - 有没有办法在本机反应中制作可折叠的 SectionList?
- c# - 按排序顺序将元素插入数组
- node.js - 如何在 Node.js/Sailsjs 的两个不同列上一次上传两个图像
- spotfire - Spotfire Map Chart - 仅在突出显示(选定)区域显示标记
- ansible - Ansible 自定义插件路径更改
- r - R Shiny selectInput 反应性与多变量输出
- android - YoutubePlayerApi 扩展 YoutubeBaseActivity 的任何解决方法?
- php - PHP/ JSON:来自 MySQL 数据库的数据不会出现在日历中
- angular - 在应用启动期间未评估在 Angular 8 子模块中定义的路由