@_downgrade_exhaustivity_check Swift私人关键字是什么?

时间:2018-07-16 03:06:44

标签: swift

在浏览Swift存储库时,我碰到了那个关键字。

那是什么意思?

例如,来自Time.swift

public enum DispatchTimeInterval : Equatable {
    case seconds(Int)
    case milliseconds(Int)
    case microseconds(Int)
    case nanoseconds(Int)
    @_downgrade_exhaustivity_check
    case never
}

2 个答案:

答案 0 :(得分:3)

实际的提交消息状态

  

实施@_downgrade_exhaustivity_check

     

分派请求可以添加新案例,但可以处理丢失的案例   这种情况的实例以警告而非错误的形式作为警告。它   至少在引用注释的情况下仍然是一个错误   一种模式无法覆盖其余空间,但不是   错误,以完全省略引用案例的模式空间。

     

此属性是私有属性,已丑陋以故意阻止其使用   在这个用例之外使用。

来源https://git.snooey.net/Mirrors/swift/commit/03527d9eec65324434011d23219e2bf7525642c6

答案 1 :(得分:1)

在我看来,如果您在DispatchTimeInterval上打开了一个开关,而忽略了never情况,则会收到警告而不是编译错误。