Swift 中的过滤器
Swift 提供了很多方便的函数来操作数组,比如 假设你有一个数组,接着你想要创建一个新的数组,这个数组包含原数组中所有大于 10 的元素,你可以使用下面的 for 循环: let anArray = Array(1...20) var anotherArray = [Int]() for i in anArray { if i > 10 { anotherArray.append(i) } } print(anotherArray) // [11,12,13,14,15,16,17,18,19,20] 除了代码多点,也没什么问题。 Filter但是你可以尝试使用一下 let anotherArray = anArray.filter({ (a:Int) -> Bool in return a > 10 }) print(anotherArray) 该函数带一个闭包做为参数,这个闭包将数组中的元素作为参数,并返回一个 通过 Swift 提供的闭包简化写法,我们可以进一步精简: let anotherArray = anArray.filter ({$0 > 10}) print(anotherArray) // [11,20] 和最初的版本对比一下,是不是精简了许多呢:)。 使用 map 来组合数组还提供了一个有趣的函数 let anArray = Array(1...20) let anotherArray = anArray.filter({$0 > 10}).map({$0 * 2}) print(anotherArray) // [22,24,26,28,30,32,34,36,38,40] 关于 map 更多的细节,可以查看我此前写的一篇文章 当然你只能在条件不太复杂时这么做,如果情况比较复杂,这种写法将使代码变得更加难读。大体来说就是,如果为了可读性,那么多写点代码还是值得的。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |