У меня вопрос о какой-то ошибке компилятора, которую я получаю при работе с универсальными типами в Swift.
Так что в данный момент я сталкиваюсь с этой проблемой, где я пытаюсь расширить Dictionary
с помощьюwhere
предложения путем добавления статических переменных и функций.См. Пример ниже:
extension Dictionary where Key == String, Value == String {
static func foo() -> [String: String] {
return [
"bar": "bar",
"baz": "baz"
]
}
}
Проблема теперь возникает, когда я снова расширяю Dictionary
с другим универсальным соответствием, таким как:
extension Dictionary where Key == String, Value == Int {
static let foo: [String: Int] = [
"bar": 0,
"baz": 1
]
}
Обратите внимание, что Value
изменено с String
на Int
, а foo
во втором расширении объявлено как let
.Теперь это показывает следующую ошибку компилятора:
Invalid redeclaration of 'foo'
Однако, если я изменю обе реализации foo
на статическую функцию или обе на статическую let
или var
, он прекрасно скомпилируется.
Есть ли какие-то быстрые махинации, которые мне не хватает?