大佬教程收集整理的这篇文章主要介绍了Swift Switch保护壳“不”,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
由于所有模式都按顺序检查(第一个匹配项“获胜”),因此您可以执行以下操作:
switch (serverState, tlStatE) {
case (.ConnecTing, .ConnecTing): return true // Both connecTing
case (.ConnecTing, _): return false // First connecTing, second something else
case (.Closed, .disconnected(.NonE)): return true
case (.Closed, _): return false
// and so on ...
因此,通常,可以使用两种模式来匹配其中一个状态 不是@H_696_10@ 特定状态的情况:第一个 匹配@H_696_10@ 状态,第二个是通配符模式(_
),然后匹配所有其他情况。
我有两个枚举:
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 State无法实现的状态,则需要在它们之间进行切换,并返回’false’。例如,如果将返回false
serverState == .open && tlState ==
.Disconnected
。我试图使用switch语句执行此操作,但是我发现我真正想要的是匹配一个状态 不是@H_696_10@ 特定状态的情况。例如:
switch (serverState,tlStatE) {
case (.ConnecTing,!.ConnecTing): return false
case (.Closed,!.Disconnected(.NonE)): return false
case (.Error(_),!.Disconnected(.Some(_)): return false
case (.open,!.Connected),(.LoggedIn,!.Connected): return false
default: return true
}
显然,这是行不通的,因为您不能放在!
case语句之前。我唯一的其他选择是指定所有 允许的@H_696_10@
情况,而这种情况要多得多。指定限制并允许所有其他状态组合更有意义,但是我不确定如何执行此操作。有任何想法吗?我还试图避免嵌套的switch语句。
注意:我知道我可以使用Swift 2来做到这一点if case
,但是由于这是生产代码,所以我现在不能使用Swift 2。因此,请使用Swift
1.2中的解决方案做出回应。
以上是大佬教程为你收集整理的Swift Switch保护壳“不”全部内容,希望文章能够帮你解决Swift Switch保护壳“不”所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。