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

时间:2019-03-17 20:56:22

标签: swift enums

以下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: "")
    }
}

它有两个名为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
    }

错误是:“元组模式元素标签'XYValues'必须是'dateValues'”。 这正常吗?像编译器这样的感觉应该要么禁止使用相同名称的情况,要么允许将两者都打开。

1 个答案:

答案 0 :(得分:3)

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