Swift Switch案例“不”

Swift Switch案例“不”,第1张

概述我有两个枚举: public enum ServerState { case Connecting case Open case LoggedIn case Closed case Error(NSError)}enum TransportLayerState { case Disconnected(NSError?) case Connecting case 我有两个枚举:
public enum ServerState {  case Connecting  case Open  case LoggedIn  case Closed  case Error(NSError)}enum TransportLayerState {  case disconnected(NSError?)  case Connecting  case Connected}

我需要在它们之间切换,如果ServerState设置为基础TL状态不可能的状态,则返回’false’.例如,如果serverState == .Open&&amp ;;它将返回false. tlState == .disconnected.我正在尝试使用switch语句执行此 *** 作,但我发现我真正想要的是匹配其中一个状态不是特定状态的情况.例如:

switch (serverState,tlState) {case (.Connecting,!.Connecting): return falsecase (.Closed,!.disconnected(.None)): return falsecase (.Error(_),!.disconnected(.some(_)): return falsecase (.Open,!.Connected),(.LoggedIn,!.Connected): return falsedefault: return true}

显然这不起作用,因为你不能放置!在案件陈述之前.我唯一的另一种选择是指定所有允许的情况,这些情况要多得多.指定限制并允许所有其他状态组合更有意义,但我不知道如何执行此 *** 作.有任何想法吗?我也试图避免嵌套的switch语句.

注意:我知道我可以使用Swift 2进行此 *** 作,但是我现在不能使用Swift 2,因为这是生产代码.所以请回答Swift 1.2中的解决方案.

由于所有模式都按顺序检查(并且第一次匹配“获胜”),
你可以做以下事情:
switch (serverState,tlState) {case (.Connecting,.Connecting): return true // Both connecting case (.Connecting,_): return false  // First connecting,second something elsecase (.Closed,.disconnected(.None)): return truecase (.Closed,_): return false// and so on ...

所以一般来说,匹配状态之一不是特定状态的情况可以用两种模式完成:第一种匹配状态,第二个是通配符模式(_),然后匹配所有其他模式案例.

总结

以上是内存溢出为你收集整理的Swift Switch案例“不”全部内容,希望文章能够帮你解决Swift Switch案例“不”所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存