ExSwift 初探

swift 发布于 2017年11月20日
ExSwift 简介

ExSwift 是一套对 Swift 标准类型的扩展库,为我们提供非常丰富的接口,并且在 Github 上被很多人关注和使用。 这是它主页的截图:

安装它的方式也不复杂,主页上面有说明,只需要将它的源代码目录复制到你的项目中即可。更多信息大家可以到 ExSwift 的主页中详细了解: https://github.com/pNre/ExSwift

ExSwift 示例

ExSwift 主要是对 Swift 中的几个基础类型进行扩展,提供了一系列非常便捷的操作。 这些基础类型包括 Array,Int,Float,String,Range,Dictionary,NSArray,SequenceOf,Double,NSDate

除了基础类型之外,还提供了一些工具方法,也非常的强大。

Array 类型为例,我们看看 ExSwift 提供的扩展方法。以下部分代码摘自 ExSwift Wiki。

  1. each (call: (Element) -> ()) 遍历数组的所有元素。
let array = [5, 1, 0, 10]
array.each { item in println(item) }
/* Prints → */
// 5
// 1
// 0
// 10

Swift 自身也提供了 for .. in 语法来遍历数组, 但 each 方法更符合习惯使用闭包的同学们的口味。

  1. eachRight (call: (Element) -> ()) 也是遍历数组,只是变成了倒序。
let array = [5, 1, 0, 10]
array.eachRight { item in println(item) }
/* Prints → */
// 10
// 0
// 1
// 5

上面的代码示例非常直观, 这次数组的元素是从最后一个往第一个开始进行遍历。

  1. first () -> Element?last () -> Element? : 属性 Objective-C 的同学对这两个函数就比较明白了,分别返回数组的第一个元素和最后一个元素。
let array = [1, 2, 3, 4, 5]
array.first()!
// → 1

但需要注意的一点是,这两个方法返回的是 Optional 值,这也是 Swift 特有的概念,我们可以使用 if let 的方式将这个值解包出来。

  1. get (n: Int) -> Element? : 获取数组指定索引的元素。

这个方法比较有意思,如果 n 是正常合法的数组索引(也就是 n 大于 0 并且小于数组的元素个数)。那么就会返回指定索引的元素。 但如果 n 超出了数组的界限,这个方法并不会发生越界错误,取而代之,它会返回 n % 数组元素个数的那个值。

看一个例子就明白啦, 假设咱们有这样一个数组, let array = [1, 2, 3, 4]:

array.get(4)!
// → 1

对于这个数组来说,索引 4 超出了他的界限, 所以对它进行取余操作,结果又指回了索引 0,并返回它所对应的元素。

get 方法返回的也是一个 Optional 值, 所以大家使用的时候也要注意。

工具方法
  1. once 这个方法接受一个闭包,返回一个闭包,这个闭包只有在第一次调用的时候才会被执行,以后的调用后会忽略:
let greet = ExSwift.once { (names: String...) -> () in println("Hello " + names[0]) }

greet("World")
// → Hello World

greet("People")
// →

如上面的代码,第二次对 greet 的调用实际上没有进行任何操作。 这个方法还是比较实用的,比如我们常用的单例方法。

结尾

ExSwift 为我们提供了非常多的扩展。除了我们这里介绍的这些,还有大量的扩展,而且都很实用。 相信这个库值得大家去看一看。


如果你觉得这篇文章有帮助,还可以关注微信公众号 swift-cafe,会有更多我的原创内容分享给你~

本站文章均为原创内容,如需转载请注明出处,谢谢。
关注微信公众号
发现更多精彩
swift-cafe