這就是我的意思。
enum Device {
case iPhone_13Pro, iPhone_12Pro
case iPadPro_129
case iPadPro_11
}
// hypothetical Scenario case iPadPro_11 }
enum Device_Group {
case iPhones
case iPads
}
是否有辦法像上面那樣表示某一組情況(可以是另一個列舉或同一列舉中的不同情況--這樣我就可以像下面那樣做了?
//DO THIS
switch device {
case iPhones。
print("這些是iPhones")
case iPads。
print(" These are iPads")
}
// INSTEAD OF THIS "這些是iPad" }
switch device {
case .iPhone_13Pro, .iPhone_12Pro:
print(" These are iPhones")
case .iPadPro_129, .iPadPro_11:
print(" These are iPads")
}
我不知道這是否是一個奇怪的問題,但我發現在使用switch陳述句時,將多個案例分組有一定的好處。希望能得到這方面的建議。謝謝。
uj5u.com熱心網友回復:
你可以使用嵌套的Enum和一個帶引數的case
。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。
}
//列印 "它是一個電話"。
uj5u.com熱心網友回復:
你可以為iPhone和iPad定義兩個不同的列舉,然后將它們作為設備型別的關聯值。
https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html
enum Ipad {
case iPadAir
case iPadPro
}
enum Iphone {
case iPhone12
case iPhone13
}
enum Device {
case iPad(model: Ipad)
case iPhone(model: Iphone)
}
func findDeviceType(device: Device) {
switch 設備 {
case .iPad。
print("iPad"/span>)
case .iPhone。
print("iPhone")
}
}
findDeviceType(device: Device.iPad(model: .iPadAir)) //iPad。
uj5u.com熱心網友回復:
你也可以看看OptionSet,它是靈活的方法來分組和序列化你的專案,因為它們有獨特的值。例如:
struct Device: OptionSet {
let rawValue: Int
static let iPhone_13Pro = Self(rawValue。1 << 0)
static let iPhone_12Pro = Self(rawValue: 1 << 1)
static let iPadPro_129 = Self(rawValue: 1 << 2)
static let iPadPro_11 = Self(rawValue。1 << 3)
static let iPhone。Self = [ .iPhone_13Pro, .iPhone_12Pro]
static let iPad: Self = [ .iPadPro_129, .iPadPro_11]
static let all: Self = [ .iPhone, .iPad]
}
let device = Device.iPhone_13Pro
if Device.iPhone.contains(device) {
print("It's iPhone"/span>)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/323146.html
標籤:
