如何在swift中对类型化数组进行排序?

时间:2016-09-30 10:59:08

标签: arrays swift sorting

我建立了一个自定义类,其中包含一个"内部"数组并提供一些有用的方法。

class ArrayList<T> {
  private var array : Array<T>

  public init() {
    array = Array<T>()
  }

  public func add(element : T) {
    array.append(element)
  }

  public func size() -> Int {
    return array.count
  }

  ...
}

好的,到目前为止,这对我来说还不错 但是现在我还想要一个方法来对数组进行排序。我已经拥有以下内容:

public func sort(comparator : ?) {
  array = array.sort(comparator)
}

问号代表参数类型,这是我的问题:参数必须包含哪种类型?我读了一些关于@noescape&lt; &gt;的内容但是我无法让它发挥作用! 我使用的是Swift 2.2。

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用标准闭包

public func sort(comparator : (T, T) -> Bool) {
   array.sortInPlace(comparator)
}

并将泛型类型约束为Comparable协议

class ArrayList<T : Comparable>

然后你可以使用这段代码

let arrayList = ArrayList<Int>()
arrayList.add(5)
arrayList.add(12)
arrayList.add(10)
arrayList.add(2)

arrayList.sort { $0 < $1 }

print(arrayList.array) // [2, 5, 10, 12]