Перечисление с одинаковыми именами дел со связанными значениями разных типов - PullRequest
2 голосов
/ 17 марта 2019

Компилируется следующий код 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 Ответ

3 голосов
/ 18 марта 2019

Это ошибка компилятора Swift.См. SR-10077 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...