约束通用参数

时间:2014-09-27 12:54:50

标签: generics swift

我有一个名为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 这是一个错误吗?或者我做错了什么?

0 个答案:

没有答案