作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个根据 type
变量显示不同横幅的 switch 语句。
switch type {
case HPBannerType.NetworkUnavailableBanner:
break
case HPBannerType.LocationServiceUnavailableBanner:
break
case HPBannerType.LocationServiceDisabledBanner:
break
default:
break
}
type
变量的类型是 HPBannerType
,它是一个枚举:
enum HPBannerType: String{
case NetworkUnavailableBanner = "HPNetworkUnavailableBanner"
case LocationServiceUnavailableBanner = "HPLocationServiceUnavailableBanner"
case LocationServiceDisabledBanner = "HPLocationServiceDisabledBanner"
}
3 种类型中没有完全默认的类型。当我编写 switch 语句时,我必须列出所有情况以便更清楚地理解。这会使结束的“默认”状态成为无用状态并显示警告。
Default will never be executed
我怎样才能消除这个警告?
编辑:
@Eric D. 有绝对正确的解决方案。但是我发布这个的原因是因为
起初,我没有使用简写形式 .XXX
,而是使用完整形式 HPBannerType.XXX
,当我删除 default
标签时,XCode 给了我 200 个错误!
因此,要纠正此问题,您必须使用速记形式让 XCode 识别其详尽的 switch 语句!否则你会得到错误。您可以尝试以下操作:
switch type {
case HPBannerType.NetworkUnavailableBanner:
break
case HPBannerType.LocationServiceUnavailableBanner:
break
case HPBannerType.LocationServiceDisabledBanner:
break
}
这会引发错误!
最佳答案
切换枚举时不需要包含 default
,因为编译器知道切换是详尽无遗的(您已经涵盖了所有情况):
switch type {
case HPBannerType.NetworkUnavailableBanner:
break
case HPBannerType.LocationServiceUnavailableBanner:
break
case HPBannerType.LocationServiceDisabledBanner:
break
}
正如@vadian 评论的那样,您还可以使用更短的语法,因为编译器已经知道 type
是 HPBannerType
类型的枚举:
switch type {
case .NetworkUnavailableBanner:
break
case .LocationServiceUnavailableBanner:
break
case .LocationServiceDisabledBanner:
break
}
关于swift - 如何在 Swift 2.0 中静音 "Default will never be executed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34111414/
我是一名优秀的程序员,十分优秀!