具有相同案例名称和不同类型关联值的枚举

Pau*_*l B 8 enums swift

以下 Swift 代码编译:

enum GraphDataSource  {
    case array(data: [Double], start: Double?, step: Double?)
    case pairs(XYValues: [Double: Double])
    case pairs(dateValues: [Date: Double])
    case function((Double) -> Double?)

    func localizedName() -> String {
        // TODO: Create localizable strings
        return NSLocalizedString(Mirror(reflecting: self).children.first?.label ?? "", comment: "")
    }
}
Run Code Online (Sandbox Code Playgroud)

它有两个名为pairs. 但是当我尝试提取关联值时,结果是我无法选择我想要的值。

    var graphData = GraphDataSource.function(sin)

    switch graphData {
    case .pairs(dateValues: let vals):
        vals.keys.forEach({print($0)})
    case .pairs(XYValues: let xy): // without this case everyting compiles OK
        xy.keys.forEach({print($0)})
    default:
        break
    }
Run Code Online (Sandbox Code Playgroud)

错误是:“元组模式元素标签‘XYValues’必须是‘dateValues’”。这是正常的吗?感觉编译器应该禁止同名的情况或允许同时打开两者。

Rob*_*ier 10

这是一个 Swift 编译器错误。见SR-10077