【发布时间】:2018-04-30 20:41:29
【问题描述】:
我们有以下枚举和变量
enum DisplayState{
case loading
case loaded(ViewModel)
case noResults
case error
}
var displayState:DisplayState = .loading
我们想测试我们是否处于loaded以外的任何状态。
既然有关联值,这当然行不通……
if displayState != .loaded {
// Do something
}
但我希望能找到除了这些之外的其他东西......
switch displayState{
case .loaded: break
default: // Do something
}
或
if case .loaded = displayState {} else {
// Do something
}
那么测试这种情况的最简单方法是什么?
【问题讨论】:
-
你总是提出很好的问题。这个很有趣!我通常制作辅助计算变量,例如
isLoading、isLoaded、hasNoResults、isErrored,所以我会使用其中之一。 -
感谢您的赞誉! Swift 是一门很棒的语言,这就是为什么这让我感到惊讶的是,对于这些你不关心值是什么的简单测试,它必须如此复杂。我觉得我应该能够测试一个值而忽略它的类型。我可能不得不访问 Swift Evolution,看看是否有理由不这样做。我的意思是你可以在忽略相关值的同时对其进行模式匹配,那么为什么不重载相等来做同样的事情呢?
-
是的,我希望有一种为具有关联值的枚举制作的“metaenum”,它可以让您在不特别考虑关联值的情况下谈论案例。
标签: swift enums associated-value