【问题标题】:Generic Operator Overloading in SwiftSwift 中的泛型运算符重载
【发布时间】:2015-02-26 10:09:44
【问题描述】:

我一直在学习 Swift,并且有一个关于使用泛型和运算符重载的问题。这是我的要求:

  1. 拥有一个实现泛型矩阵功能的基本泛型结构,具有三个主要参数:row:Int、column:Int 和 array:[T]。
  2. 想实现==运算符,即每个参数都是==。
  3. 不想为每种类型重复操作符重载函数。

似乎 Swift 不够聪明,无法让我编写一个泛型运算符重载函数来引用泛型数组 [T] 而没有一些变通方法?

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

我只是想知道这里的专业人士的普遍共识是什么? 抱歉,我会尽快发布一个代码示例作为编辑。

保罗

【问题讨论】:

  • 那么代码示例在哪里?大声笑...

标签: swift generics operator-overloading


【解决方案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 
}

【讨论】:

  • 这目前不起作用 - 如果任一数组为空,则无论另一个数组是否为空,都将返回 true。最好写:return lhs.array == rhs.array.
  • 对不起,我忘了我的坏事
猜你喜欢
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 2016-01-25
  • 2023-03-24
  • 2015-05-23
  • 2010-10-19
  • 1970-01-01
  • 2012-12-10
相关资源
最近更新 更多