给出C#中的以下枚举和switch/case,以根据其状态返回文本框的边框颜色.
enum TextboxState {
Default,
Error
}
switch(foo) {
default:
case TextboxState.Default: return Color.Black;
case TextboxState.Error: return Color.Red;
}
Run Code Online (Sandbox Code Playgroud)
所以基本上我定义了一个真实的,而不仅仅是通过约定默认状态,也就是TextboxState.Default通过添加default:案例 我只是想这样做,以防止在枚举中添加新值时将来的更改.
根据Swift的书,这是不可能的:
"如果为每个可能的值提供一个switch case是不合适的,你可以定义一个默认的catch-all case来覆盖任何未明确解决的值.这个包罗万象的案例由关键字default指示,并且必须始终显示在最后."
这一段很清楚,所以我认为上面的模式不适用于Swift或者我错过了什么?有没有其他方式来存档像上面的代码?
Ant*_*nio 11
您可以fallthrough通过移动案例中的共享行为来default使用,并fallthrough在所有情况下使用您希望发生共享行为的情况.
例如,如果这是你的枚举(添加了第3个案例,表明它可以处理多个掉落):
enum TextboxState {
case Default
case Error
case SomethingElse
}
Run Code Online (Sandbox Code Playgroud)
您可以switch按如下方式格式化语句:
switch(foo) {
case TextboxState.Error:
return UIColor.redColor()
case TextboxState.Default:
fallthrough
case TextboxState.SomethingElse:
fallthrough
default:
return UIColor.blackColor()
}
Run Code Online (Sandbox Code Playgroud)
每个都fallthrough将执行点移动到下一个案例,直到default案例.
| 归档时间: |
|
| 查看次数: |
2199 次 |
| 最近记录: |