美文网首页
Swift 中的 数组排序 和 重载运算符

Swift 中的 数组排序 和 重载运算符

作者: 扬仔360 | 来源:发表于2015-11-04 20:00 被阅读349次

数组排序

首先拿到一个数组,然后这个是按照数字中Item元素的 name 属性来排序的代码片段:

  searchResults.sortInPlace({ result1, result2 in
    return result1.name.localizedStandardCompare(result2.name) == .OrderedAscending
  })

这个使用的方法是sortInPlace,还有另外一个方法是sort

如果使用了sort,那么原来的数组是不会有任何变化的,使用sortInPlace,会在原来的数组上做修改。

还可以简化为:

  searchResults.sortInPlace{
    $0.name.localizedStandardCompare($1.name) == .OrderedAscending
  }

第二种写法没有传统的括号 (),使用 $0 来标记两个 $1 数组中的对象可读性很好,这是 Swift 的闭包(Closures)中很好的一个特性。

运算符重载

另外,可以使用运算符重载(operator overloading)把这个做的更好:
在被排序对象的数组对象之外,记住是在Class之外,声明重载算术运算符的方法:

func < (lhs: SearchResult, rhs: SearchResult) -> Bool {
  return lhs.name.localizedStandardCompare(rhs.name) == .OrderedAscending
}

有了这个方法,刚刚的排序就可以写的更短:

  searchResults.sortInPlace{$0 < $1}

再短:

  searchResults.sortInPlace(<)

End.

相关文章

  • Swift 中的 数组排序 和 重载运算符

    数组排序 首先拿到一个数组,然后这个是按照数字中Item元素的 name 属性来排序的代码片段: 这个使用的方法是...

  • swift重载或自定义操作符

    重载运算符 在Swift中,类和结构体是可以提供现有运算符的自定义实现,也就是重载现有运算符。三元运算符(a?b:...

  • 1.2.20_C++ 下标运算符 [] 重载

    C++ 重载运算符和重载函数 下标操作符 [] 通常用于访问数组元素。重载该运算符用于增强操作 C++ 数组的功能...

  • Swift - 运算符重载

    一、定义 在Swift的官方文档中运算符重载叫做运算符函数(Operator Functions)。简单来讲主要实...

  • chapter13 运算符重载

    python中的运算符重载 不能重载内置类型的运算符 不能新建运算符,只能重载现有的 is, and, or 和n...

  • Swift数组和字典

    数组的创建 数组的访问和查找 数组的编辑 Swift数组提供了几种remove方法,用来删除数组中的元素 数组排序...

  • C++ 部分运算符重载

    可重载的运算符 不可重载的运算符和符号 重载运算符为类的成员函数 重载运算符为友元函数 重载赋值运算符 重载流插入...

  • swift中的运算符重载

    在Swift的官方文档中运算符重载叫做运算符函数(Operator Functions),顾名思义就是对已经有的运...

  • Swift重载运算符

    [TOC] Swift重载运算符 运算符重载允许你改变现在的作用在特定在的结构体和类上的已经存在的操作符的工作方式...

  • 每天学一点Swift---- 运算符函数

    一.运算符重载 1. Swift的运算符提供了良好的可扩展性,Swift不仅允许开发者重新定义已有的运算符(运算符...

网友评论

      本文标题:Swift 中的 数组排序 和 重载运算符

      本文链接:https://www.haomeiwen.com/subject/bhzqhttx.html