我有一个名为Machine
的协议。它可以读取的输入为typealias
。它被限制为Hashable
类型。
protocol Machine {
typealias InputType: Hashable
// ...
}
有一个类实现了这个名为OrMachine
的协议。
class OrMachine<T: Hashable>: Machine {
}
我想创建一个接收Machine
个对象数组的初始化程序。因为机器包含typealias
,我必须将其定义为实现Machine
的方法的通用参数。我还需要说传递的机器具有与此相同的输入类型。
init<MachineType: Machine where MachineType.InputType == T>(machines: [MachineType]){
}
这给了我以下错误。
相同类型约束类型&#39; T&#39;不符合所要求的协议&#39; Hashable&#39;
为什么会这样?在OrMachine
我清楚地说T
实施了Hashable
这是一个错误吗?或者我做错了什么?