Swift 枚举,`OR` 均衡
Swift Enums, `OR` equalization
如何检查枚举是否等于可能的情况之一。有没有比以下更好的解决方案:
[.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 有更多情况怎么办?
只有三种可能的比较结果:
public enum ComparisonResult : Int {
case orderedAscending
case orderedSame
case orderedDescending
}
因此
Calendar.current.compare(date1, to: date2, toGranularity: .day) != .orderedDescending
可用于检查第二个日期是在同一天还是更晚的一天
比第一次约会。
为什么不以这种方式执行转换结果:
let result = alendar.current.compare(date1, to: date2, toGranularity: .day)
switch result {
case orderedAscending:
// actions
case orderedSame:
//actions
default: break
}
这样更易读也更清晰
如何检查枚举是否等于可能的情况之一。有没有比以下更好的解决方案:
[.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 有更多情况怎么办?
只有三种可能的比较结果:
public enum ComparisonResult : Int {
case orderedAscending
case orderedSame
case orderedDescending
}
因此
Calendar.current.compare(date1, to: date2, toGranularity: .day) != .orderedDescending
可用于检查第二个日期是在同一天还是更晚的一天 比第一次约会。
为什么不以这种方式执行转换结果:
let result = alendar.current.compare(date1, to: date2, toGranularity: .day)
switch result {
case orderedAscending:
// actions
case orderedSame:
//actions
default: break
}
这样更易读也更清晰