美文网首页
swift 闭包在集合中的应用

swift 闭包在集合中的应用

作者: Jax_YD | 来源:发表于2019-06-24 11:38 被阅读0次

排序

/*
数组提供了一个排序函数,sorted().使用的是默认规则,当然我们也可以定制排序规则。
*/

let names = ["ZZZZZZ", "BB", "A", "CCCC", "EEEEE"]
names.sorted()
// ["A", "BB", "CCCC", "EEEEE", "ZZZZZZ"]

//更改排序规则 其实就是利用了函数重载,具体可看函数定义
//sorted(by: <#T##(String, String) throws -> Bool#>)

names.sorted {
    $0.count > $1.count
}
// ["ZZZZZZ", "EEEEE", "CCCC", "BB", "A"]

遍历

集合提供了很多遍历的函数用来对元素进行访问及操作,并大量应用了闭包。
重点需要了解的函数有: 
forEach、filter、map、reduce

forEach

/*
循环遍历集合中的元素,相当于for-in 快速遍历    
*/

let values = [5, 3, 2, 3,1]
values.forEach {
    print("element is \($0)")
}

filter

/*
函数原型:
 func filter(_ isIncluded: (Element) -> Bool) -> [Element]
 
 按照规则过滤原数组
*/

var values = [1.5, 10, 4.88, 3.2, 8]

let res = values.filter {
    return $0 > 4
}

//res是移除掉小于或等于4的元素的新数组

map

/*
函数原型:
students.map(<#T##transform: (String) throws -> T##(String) throws -> T#>)

数组映射
*/

let input = ["0", "12", "name", "hi", "3"]

let number = input.map {
    Int($0) //将元素转换为Int型
}
//注意类型转换可能失败,所以返回的是可选型
//[Optional(0), Optional(12), nil, nil, Optional(3)]

/*
另外一个高度近似的函数
flatMap
隐含了两种操作
1.解包
2.展开并合并
*/

let flatNumber = input.flatMap() {
    Int($0)
}
//[0, 12, 3]

reduce

/*
函数原型
reduce(<#T##initialResult: Result##Result#>, <#T##nextPartialResult: (Result, String) throws -> Result##(Result, String) throws -> Result#>)

*/

//数组
let flatNumber = [0, 12, 3]

let sum = flatNumber.reduce(0) {
    return $0 + $1
}
//15

//字典
let stock = [1.5: 5, 10: 2, 4.99: 20, 2.30: 5, 8.19: 30]
let stockSum = stock.reduce(0) {
  return $0 + $1.key * Double($1.value)
}
//384.5

/*
另一个reduce重载函数
注意inout 关键字,所以想想你可以怎么应用?
*/
input.reduce(into: <#T##Result#>) { (<#inout Result#>, <#String#>) in
    <#code#>
}

该文章做知识点笔记用来源如下:
作者:NSaylor
链接:https://www.jianshu.com/p/2b23a50b0c8d
来源:简书

相关文章

  • swift 闭包在集合中的应用

    排序 遍历 forEach filter map reduce 该文章做知识点笔记用来源如下:作者:NSaylor...

  • Swift闭包和函数

    函数在Swift中只是一种特殊的闭包,闭包在Swift语言中是一等公民,支持闭包嵌套和闭包传递。Swift中的闭包...

  • swift - 闭包基础

    闭包 closure 闭包在Swift中应用广泛,在许多系统库方法中都能看到。 无名本质是函数使用时注意循环引用 ...

  • Swift4 闭包及其应用

    闭包 closure 闭包在Swift中应用广泛,在许多系统库方法中都能看到。 无名 本质是函数 使用时注意循环引...

  • Swift 中的闭包(Closures)

    前言 今天我想聊一聊 Swift 中的闭包(Closures)。闭包在 Swift 中的功能非常强大。它可以简化我...

  • Swift中的闭包详解

    转载自:Swift中的闭包(Closure) 概念 闭包在Swift中非常有用。通俗的解释就是一个Int类型里存储...

  • 单例模式,promise与async/await

    复习了apply ,argument以及闭包在单例模式中的应用闭包在其中充当了储存器的作用,用来判断有无实例 pr...

  • 26.Swift学习之闭包在集合中的运用

    闭包是Swift中一个重要的知识点,不仅在开发中能够帮助解决很多问题(如逆向传值),而且在许多官方系统库方法中都能...

  • 你要知道的Swift闭包

    前言 Swift的闭包在capture变量时,跟oc的还是有些区别的。下面来讲讲。 一览Swift的闭包 在clo...

  • 关于OC中的block介绍

    摘要:OC中的block和swift中的闭包在iOS开发中很常见,使用场景也非常多,例如块动画.GCD的回调.迭代...

网友评论

      本文标题:swift 闭包在集合中的应用

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