swift – 将默认情况与其他情况相结合

前端之家收集整理的这篇文章主要介绍了swift – 将默认情况与其他情况相结合前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
给出C#中的以下枚举和switch / case,例如根据其状态返回文本框的边框颜色.
enum TextBoxState {
 Default,Error
}

switch(foo) {
 default:
 case TextBoxState.Default:  return Color.Black;
 case TextBoxState.Error:    return Color.Red;
}

所以基本上我通过添加default:case来定义一个真实的而不仅仅是通过约定默认状态aka TextBoxState.Default.我只是想这样做,以防止在枚举中添加新值时将来的更改.

根据Swift的书,这是不可能的:

“If it is not appropriate to provide a switch case for every possible
value,you can define a default catch-all case to cover any values
that are not addressed explicitly. This catch-all case is indicated by
the keyword default,and must always appear last.”

该段落很清楚,所以我认为上面的模式不适用于Swift或者我错过了什么?有没有其他方式来存档像上面的代码

您可以使用fallthrough来执行此操作,方法是在默认情况下移动共享行为,并在您希望发生共享行为的所有情况下使用fallthrough.

例如,如果这是你的枚举(添加了第3个案例,表明它可以处理多个掉落):

enum TextBoxState {
    case Default
    case Error
    case SomethingElse
}

您可以格式化switch语句,如下所示:

switch(foo) {
case TextBoxState.Error:
    return UIColor.redColor()

case TextBoxState.Default:
    fallthrough

case TextBoxState.SomethingElse:
    fallthrough

default: 
    return UIColor.blackColor()
}

每次尝试都将执行点移动到下一个案例,直到默认情况.

猜你在找的Swift相关文章