以下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'”。 这正常吗?像编译器这样的感觉应该要么禁止使用相同名称的情况,要么允许将两者都打开。