相关疑难解决方法(0)

奇怪的泛型错误

我正在尝试使用泛型实现以下结构.得到一个奇怪的编译器错误,无法弄清楚原因.

class Translator<T:Hashable> {...}

class FooTranslator<String>:Translator<String> {...}
Run Code Online (Sandbox Code Playgroud)

这个想法是Translator使用T作为字典中键的类型.这可以是例如String或枚举.子类提供具体的字典.

但它失败的原因是:"类型'字符串'不符合协议'Hashable'"

但String符合Hashable!我疯了吗?它也不适用于Int,它也符合Hashable.如果我将Hashable替换为Equatable也不起作用,这也应该由两者实现.

If I remove the type constraint, just for testing (where I also have to disable the dictionary, as I can't use anything not hashable as key there) - it compiles

class Translator<T> {...}

class FooTranslator<String>:Translator<String> {...}
Run Code Online (Sandbox Code Playgroud)

What am I doing wrong?

generics swift

28
推荐指数
2
解决办法
2099
查看次数

标签 统计

generics ×1

swift ×1