Оперируя общими коллекциями в Swift - PullRequest
0 голосов
/ 20 декабря 2018

Я пишу некоторый код, который в идеале мог бы работать с чем угодно, на что можно подписать String.Вот пример:

class MyClass {
    func getValue<DataSource>(key: String, from dataSource: DataSource) -> Any? where DataSource: Collection, DataSource.Index == String {
        return dataSource[key]
    }
}

let data: [String: Any] = [
    "why": "is this not working"
]

MyClass().getValue(key: "why", from: data) // Compile error!

Я получаю ошибку Generic parameter "DataSource" could not be inferred.Я не могу понять, почему это неверный код.У меня есть ощущение, что есть некоторый нюанс ковариации / контравариантности, который я не усвоил должным образом.В любом случае, возможно ли даже выполнить то, что я пытаюсь сделать?

...