【问题标题】:Issues about Array Extension for sort关于排序数组扩展的问题
【发布时间】:2014-06-14 12:14:29
【问题描述】:

我正在尝试对 Array 类型进行小扩展,以降序对元素进行排序。我已阅读有关该主题的其他决议,包括this。但我得到一个错误:

错误:找不到接受>提供的参数的“排序”的重载返回 Swift.sort(self) {$0 > $1}

谁能帮助解决这个问题:下面的代码

extension Array {
  func sortAsc()->T[] {
     return Swift.sort(self) {$0 > $1}
  }   
}

【问题讨论】:

    标签: swift


    【解决方案1】:

    Afaik 通用扩展是不可能的。如果是这样,他们会在自己的图书馆里这样做 那么使用普通函数呢?

    func sortAsc<T:Comparable>(data: T[])->T[] {
        return Swift.sort(data) {$1 > $0}
    }
    

    【讨论】:

    • 好的。知道了。但是,我确实在论坛中看到了 sum() 作为扩展或数组的实现。我们可以为 Int 提供一个特定于类型的 sortAsc 实现吗
    • 你是什么意思“通用扩展是不可能的”?有参考吗?
    • 数组是Array&lt;T&gt;,但是为了能够排序它必须是Array&lt;T: Comparable&gt;但是Swift不允许extension Array&lt;T: Comparable&gt;
    【解决方案2】:

    你可以试试这个:

    extension Array where Element: Comparable {
        func sortDesc()->Array {
            return sort(>)
        }
    }
    
    [5, 3, 9].sortDesc() // returns [9, 5, 3]
    

    【讨论】:

      猜你喜欢
      • 2017-11-18
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多