我在swift中创建了一个Matrix类,我希望它是Generic,所以我可以使用它像这样:
let matrix: Matrix<Character>; // Or any other type
我创建了这样的课程:
class Matrix<Template>: NSObject {}
我正在创建一个函数,将Gravity应用于矩阵,该矩阵采用Template类型的emptyKey,并将每个不等于emptyKey的元素拖动到矩阵的底部
// For example emptyKey is "_" and Template is String.
1 _ 2 1 _ _
3 4 5 == To ==> 3 _ 2
6 _ _ 6 4 5
问题是:当我尝试比较value
类型的特定位置的矩阵中的Template
和类型emptyKey
的{{1}}时,它无法编译并给我错误:
Template
我将Binary operator '==' cannot be applied to two 'Template?' operands
与xcode 7.3.1
答案 0 :(得分:4)
您需要将模板限制为Equatable。
class Matrix<Template:Equatable> ...
(另外我建议你避免使用Optionals。我不知道你在哪里使用它们,但你的错误信息暗示你是,并且它们会妨碍你。)