Swift 使用可数闭合范围作为枚举大小写
我想使用一系列范围作为枚举案例Swift 使用可数闭合范围作为枚举大小写,swift,enums,Swift,Enums,我想使用一系列范围作为枚举案例 enum TimeOfDay: CountableClosedRange<Int> { case lateNight = 0...2 case earlyMorning = 3...6 case morning = 7...11 case afternoon = 12...17 case evening = 18...20 case night = 21...24 } enum TimeOfDay:Co
enum TimeOfDay: CountableClosedRange<Int> {
case lateNight = 0...2
case earlyMorning = 3...6
case morning = 7...11
case afternoon = 12...17
case evening = 18...20
case night = 21...24
}
enum TimeOfDay:CountableClosedRange{
案例深夜=0…2
案例早起=3…6
案例上午=7…11
案例下午=12…17
病例晚=18…20
案例夜=21…24
}
我不确定这是否可能,目前我得到:
错误:枚举大小写的原始值必须是文字
案例深夜=0…2
谢谢你看!:) 我不知道如何直接做到这一点。您可以将范围作为关联值放入每个枚举中,但这很快就会变得难看
enum TimeOfDay {
case lateNight
case earlyMorning
case morning
case afternoon
case evening
case night
var range: CountableClosedRange<Int> {
switch self {
case .lateNight: return 0...2
case .earlyMorning: return 3...6
case .morning: return 7...11
case .afternoon: return 12...17
case .evening: return 18...20
case .night: return 21...23
}
}
init(_ hour: Int) {
switch (hour % 24) {
case TimeOfDay.lateNight.range: self = .lateNight
case TimeOfDay.earlyMorning.range: self = .earlyMorning
case TimeOfDay.morning.range: self = .morning
case TimeOfDay.afternoon.range: self = .afternoon
case TimeOfDay.evening.range: self = .evening
case TimeOfDay.night.range: self = .night
default: fatalError()
}
}
}
enum TimeOfDay{
深夜的案子
早起
案件上午
案件下午
案件当晚
案件之夜
变量范围:可数CloseDrange{
切换自身{
案例。深夜:返回0…2
案例。清晨:返回3…6
案例。早上:返回7…11
下午:返回12…17
晚上:返回18…20
案例。夜晚:返回21…23
}
}
初始时间(uuh:Int){
开关(小时数%24){
案例TimeOfDay.lateNight.range:self=.lateNight
案例时间day.earlyMorning.range:self=.earlyMorning
案例TimeOfDay.morning.range:self=.morning
案例TimeOfDay.午后.range:self=.午后
案例时间day.night.range:self=.night
案例TimeOfDay.night.range:self=.night
默认值:fatalError()
}
}
}
可能重复的I故意没有在init
switch语句中重述大小写范围,以避免潜在错误。只在一个地方定义范围,你做到了。因此,您的hour%24
语句是多余的。