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
语句是多余的。