与许多语言不同,Swiftswitch
必须是详尽无遗的,所以如果我有:
enum Enumeration
{
case A
case B
}
那么这段代码是无效的:
switch enumeration
{
case .A:
break
}
但是,这些是有效的:
switch enumeration
{
case .A:
break
case .B:
break
}
switch enumeration
{
case .A:
break
default:
break
}
如果我稍后添加case C
到Enumeration
,第一个有效代码现在将产生编译器错误。第二个是有效的,因为它使用default:
, 将捕获.C
。
如果我遵守 semver carthage
(或 Swift 包管理器)支持,我必须为此增加主要版本吗?
对此的扩展扩展到 Objective-C(和隐式 C)。由于 Swift 中支持 C 枚举作为 Swift 枚举,因此这也适用于打算在 Swift 中使用的 Objective-C 或 C 框架。我不确定如何解决这个问题,因为这些语言没有这样的限制(如果你的编译器很好,只是一个警告)。