我对如何比较一些枚举有疑问。让我告诉你最简单的例子:
class ViewController: UIViewController {
enum MyEnum {
case FirstCase
case SecondCase(subvalue: Int) // coment out to be able to compile
}
override func viewDidLoad() {
super.viewDidLoad()
let value: MyEnum = .FirstCase
if value == .FirstCase { // will not compile if "case SecondCase(subvalue: Int)" is included into the enum
print("They are the same")
}
}
}
因此,case SecondCase(subvalue: Int)
因某些原因无法使if
语句失效。通过删除代码编译。
那么有没有办法为这些枚举创建一个正常的比较?这是一个Swift错误吗?
只是为了澄清如何使用这种枚举:
enum MyEnum {
case FirstCase
case SecondCase(subvalue: Int) // coment out to be able to compile
func printValue() {
switch self {
case .FirstCase:
print("First case")
case .SecondCase(let subvalue):
print("Second case \(subvalue)")
}
}
}
对于诸如定义需要额外参数的端点这样的情况非常方便。
实际进行检查有一个非常愚蠢的伎俩,但你必须使用switch
声明:
switch value {
case .FirstCase:
print("They are the same")
default:
break
}
这是在正常if
没有的情况下进行编译的!