【问题标题】:Swift Enums, `OR` equalizationSwift 枚举,“或”均衡
【发布时间】:2018-03-20 10:24:12
【问题描述】:

如何检查枚举是否等于可能情况之一。有没有比以下更好的解决方案:

[.orderedAscending, .orderedSame].contains(Calendar.current.compare(date, to: range.from, toGranularity: .day))

在我看来,这有点不清楚,我正在寻找更好的方法。

编辑:

根据@Martin_R 的回答,当然在这个例子中我可以做负均衡:

Calendar.current.compare(date1, to: date2, toGranularity: .day) != .orderedDescending

ComparisonResult 这里使用的只是一个例子。我正在寻找更通用的解决方案答案。例如,如果 enum 会有更多案例怎么办?

【问题讨论】:

    标签: swift refactoring code-readability


    【解决方案1】:

    为什么不以这种方式对结果执行 Switch:

    let result = alendar.current.compare(date1, to: date2, toGranularity: .day)
    
    switch result {
       case orderedAscending:
         // actions
       case orderedSame:
         //actions
       default: break
    }
    

    这样更易读更清晰

    【讨论】:

      【解决方案2】:

      只有三种可能的比较结果:

      public enum ComparisonResult : Int {
          case orderedAscending
          case orderedSame
          case orderedDescending
      }
      

      所以

      Calendar.current.compare(date1, to: date2, toGranularity: .day) != .orderedDescending 
      

      可用于检查第二个日期是在同一天还是之后 比第一次约会。

      【讨论】:

      • Tnx 用于中继。我错误地问了这个问题。我正在寻找更通用的解决方案。我编辑了我的问题。对于造成的混乱,我深表歉意。
      猜你喜欢
      • 2022-08-19
      • 2016-11-29
      • 2020-10-19
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 1970-01-01
      相关资源
      最近更新 更多