引用没有关联值的Swift枚举成员

引用没有关联值的Swift枚举成员,第1张

概述我有以下枚举: enum State: Equatable { case Loading case Finished case Error(message: String)}func ==(lhs: State, rhs: State) -> Bool { //...} 我希望能够比较枚举成员.我有重载==运算符,它有效,但有一个问题: let state: 我有以下枚举:

enum State: Equatable {    case Loading    case Finished    case Error(message: String)}func ==(lhs: State,rhs: State) -> Bool {    //...}

我希望能够比较枚举成员.我有重载==运算符,它有效,但有一个问题:

let state: State = .Loading// works just finelet thisWorks = state == .Finished // this does as welllet thisWorks2 = state == .Error("Derp!")// this,however,does not,compiler error: "Could not find member 'Error'"let thisDoesnt = state == .Error

这似乎是编译器的限制.我不明白为什么我不应该在没有相关值的情况下引用枚举成员.显然我不关心与.Error相关的错误消息,我只需要知道是否发生了错误.切换实际上这是可能的,所以我不知道为什么常规语句是有限的.

我不得不承认我没有密切关注Swift 2.我应该期待新版本的一些改进吗?另一个问题是,在它发布之前,是否有任何解决方法?

解决方法 Enums与switch非常合作:

let state: State = .Error(message: "Foo")switch state {case .Loading:    print("Loading")case .Finished:    print("Finished")case .Error(message: "Foo"):    print("Foo!!!")case .Error(message: _):    print("Some other error")}

Swift 2.0将带来另一种控制流语法,您可能会欣赏它:

Swift 2.0

if case .Error(message: _) = state {    print("An Error")}

希望这可以帮助

总结

以上是内存溢出为你收集整理的引用没有关联值的Swift枚举成员全部内容,希望文章能够帮你解决引用没有关联值的Swift枚举成员所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1018467.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存