Я пытаюсь реализовать следующую структуру, используя дженерики. Получение ошибки компилятора, не могу понять, почему.
class Translator<T:Hashable> {...}
class FooTranslator<String>:Translator<String> {...}
Идея состоит в том, что Translator использует T в качестве типа ключа в словаре. Это может быть, например, строка или перечисление. Подкласс предоставляет конкретный словарь.
Но происходит сбой, потому что: "Тип" String "не соответствует протоколу" Hashable ""
Но String соответствует Hashable. Он также не работает с Int, который также соответствует Hashable.
Если я удаляю ограничение типа, просто для тестирования (где я также должен отключить словарь, так как я не могу использовать ничего, что не может быть хешируемым в качестве ключа) - он компилируется
class Translator<T> {...}
class FooTranslator<String>:Translator<String> {...}
Что я делаю неправильно?