Swift:比较泛型中的泛型类型 class
Swift: Compare generic Types in generic class
我正在 swift 中创建矩阵 class,我希望它是通用的,所以我可以像这样使用它:
let matrix: Matrix<Character>; // Or any other type
我这样创建 class:
class Matrix<Template>: NSObject {}
我正在创建一个将重力应用于矩阵的函数,该矩阵采用模板类型的 emptyKey,并将不等于 emptyKey 的每个元素拖到矩阵的底部
// For example emptyKey is "_" and Template is String.
1 _ 2 1 _ _
3 4 5 == To ==> 3 _ 2
6 _ _ 6 4 5
问题是:当我试图比较矩阵中Template
类型的特定位置的value
与Template
类型的emptyKey
时], 它编译失败并给我错误:
Binary operator '==' cannot be applied to two 'Template?' operands
我正在使用 xcode 7.3.1
和 Swift 2.2
您需要将模板约束为 Equatable。
class Matrix<Template:Equatable> ...
(我还建议您避免使用 Optionals。我不知道您在哪里使用它们,但您的错误消息表明您在使用它们,并且它们会妨碍您。)
我正在 swift 中创建矩阵 class,我希望它是通用的,所以我可以像这样使用它:
let matrix: Matrix<Character>; // Or any other type
我这样创建 class:
class Matrix<Template>: NSObject {}
我正在创建一个将重力应用于矩阵的函数,该矩阵采用模板类型的 emptyKey,并将不等于 emptyKey 的每个元素拖到矩阵的底部
// For example emptyKey is "_" and Template is String.
1 _ 2 1 _ _
3 4 5 == To ==> 3 _ 2
6 _ _ 6 4 5
问题是:当我试图比较矩阵中Template
类型的特定位置的value
与Template
类型的emptyKey
时], 它编译失败并给我错误:
Binary operator '==' cannot be applied to two 'Template?' operands
我正在使用 xcode 7.3.1
和 Swift 2.2
您需要将模板约束为 Equatable。
class Matrix<Template:Equatable> ...
(我还建议您避免使用 Optionals。我不知道您在哪里使用它们,但您的错误消息表明您在使用它们,并且它们会妨碍您。)