Swift:比较泛型类中的泛型类型

标签 swift generics matrix compiler-errors operands

我正在快速创建一个 Matrix 类,我希望它是通用的,所以我可以像这样使用它:

let matrix: Matrix<Character>; // Or any other type

我是这样创建我的类的:

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

问题是:当我尝试比较 value 时在特定位置的矩阵中 TemplateemptyKey这也是 Template 类型,它无法编译并给我错误:

Binary operator '==' cannot be applied to two 'Template?' operands

我正在使用 xcode 7.3.1Swift 2.2

最佳答案

您需要将 Template 约束为 Equatable。

class Matrix<Template:Equatable> ...

(我还建议您避免使用 Optionals。我不知道您在哪里使用它们,但您的错误消息表明您在使用它们,并且它们会妨碍您。)

关于Swift:比较泛型类中的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38438900/

相关文章:

objective-c - Swift ViewController 与 Objc 中的 TableView 使 Cell 隐藏

swift - 在 Kitura 中运行单元测试时出错

matlab - 如何比较两个不同矩阵的行(一行与另一行)?

c++ - 强制调用常量版本成员函数

java - 为什么在泛型类(Java)的构造函数中提供类型参数是错误的?

arrays - 从向量中获取向量矩阵

python - ValueError : could not broadcast input array from shape (3,25000) into shape (25000)

ios - 自动调整表格 View

swift - 在 Swift REPL 中抑制值转储

swift - 了解常规版本和通用版本之间的函数调用优先级