美文网首页
Swift4 Closure 闭包练习

Swift4 Closure 闭包练习

作者: 艺术农 | 来源:发表于2018-06-06 10:20 被阅读12次
  • repeatTask
func repeatTask(times: Int, task: () -> Void) {
    for _ in 0..<times {
        task()
    }
}

let task = {
    print("Swift Apprentice is a great book!")
}

1.  最原始的方式
repeatTask(times: 1, task: task)

2. 直接将闭包定义在函数的参数中
repeatTask(times: 1, task: { () -> Void in
    print("Swift Apprentice is a great book!")
})

3. 简化参数和返回值
repeatTask(times: 1, task: {
    print("Swift Apprentice is a great book!")
})

4. 利用尾部闭包的特性,将参数名舍弃,并将闭包移到括号外部,这个是我们最常用的方式。
repeatTask(times: 1) {
    print("Swift Apprentice is a great book!")
}
  • 数学计算
//方法1
func mathSum(length: Int, series: (Int) -> Int) -> Int {
  var result = 0
  for i in 1...length {
    result += series(i)
  }
  return result
}

//方法2
func mathSum(length: Int, series: (Int) -> Int) -> Int {
  return (1...length).map { series($0) }.reduce(0, +)
}

//1. 调用方法1
mathSum(length: 10) { number in
  number * number
}

//2.调用方法2
mathSum(length: 10) {
  $0 * $0
}
  • 字典处理
let appRatings = [
  "Calendar Pro": [1, 5, 5, 4, 2, 1, 5, 4],
  "The Messenger": [5, 4, 2, 5, 4, 1, 1, 2],
  "Socialise": [2, 1, 2, 2, 1, 2, 4, 2]
]
//先求平均数
var averageRatings: [String: Double] = [:]
appRatings.forEach {
  let total = $0.value.reduce(0, +) // + is a function too!
  averageRatings[$0.key] = Double(total) / Double($0.value.count)
}
averageRatings
//过滤、输出
let goodApps = averageRatings.filter {
  $0.value > 3
}.map {
  $0.key
}

相关文章

  • Swift4 Closure 闭包练习

    repeatTask 数学计算 字典处理

  • 关于rust中的闭包(一)

    闭包 在计算机中,闭包 Closure, 又称词法闭包 Lexical Closure 或函数闭包 functio...

  • 关于闭包

    闭包的英文是closure,又称词法闭包(Lexical Closure)和函数闭包(Function Closu...

  • 理解闭包

    闭包 何为闭包 闭包(Closure)是词法闭包(Lexical Closure)的缩写 高级程序设计中写有权访问...

  • python之闭包与装饰器

    1 闭包 维基百科给出的解析:闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭...

  • 闭包,定时器

    问题 1.什么是闭包? 有什么作用 闭包(英语:Closure),又称词法闭包(Lexical Closure)或...

  • [Code] 优雅地使用python闭包

    在计算机科学中,闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭包(funct...

  • golang:函数闭包

    From wiki 闭包在计算机科学中,闭包(英语:Closure),又称词法闭包(Lexical Closure...

  • Swift4中 结构体中使用闭包再做自我引用时的问题

    在swift4中使用结构体时, 在一个闭包中使用Self内的方法或属性时,会报这样错误 #### “Closure...

  • 理解Python闭包

    1.什么是闭包? 维基百科: 在计算机科学中,闭包(Closure)是词法闭包(Lexical Closure)的...

网友评论

      本文标题:Swift4 Closure 闭包练习

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