Swift中的泛型运算符重载

时间:2015-02-26 10:09:44

标签: swift generics operator-overloading

我一直在学习Swift,并对使用Generics和Operator Overloading有疑问。这是我的要求:

  1. 有一个实现通用矩阵功能的基本通用结构,有三个主要参数:row:Int,column:Int和array:[T]。
  2. 想要实现==运算符,即每个参数都是==。
  3. 不想为每种类型复制运算符重载函数。
  4. 似乎Swift不够聪明,不允许我编写一个泛型运算符重载函数,它引用了通用数组[T]而没有一些解决方法?

    我已经阅读了这篇文章:[http://www.raywenderlich.com/80818/operator-overloading-in-swift-tutorial][1]并且那里给出的解决方案似乎非常复杂。

    我只是想知道专业人士之间的普遍共识是什么? 对不起,我很快就会将代码示例发布为编辑。

1 个答案:

答案 0 :(得分:1)

以下是你如何做到这一点。它非常简单,你只需要确保T是Equatable。

struct Matrix<T> {
    // Definition goes here.
    var array = [T]()
}
func ==<T: Equatable>(lhs: Matrix<T>, rhs: Matrix<T>) -> Bool {
    return lhs.array == rhs.array 
}