SwiftUI 内功教程之Closures 09 闭包捕捉价值Capturing Values及经典用法

什么是闭包

闭包是独立的功能块,可以在代码中传递和使用。Swift中的闭包类似于C和Objective-C中的块以及其他编程语言中的lambda。闭包可以从定义它们的上下文中捕获和存储对任何常量和变量的引用。这称为关闭这些常量和变量。Swift为您处理捕获的所有内存管理.


闭包可以从定义它的周围环境中捕获常量和变量

闭包可以从定义它的周围环境中捕获常量和变量。然后,闭包可以从其主体内部引用和修改这些常量和变量的值,即使定义常量和变量的原始范围不再存在。

在Swift中,最简单的可以捕获值的闭包形式是嵌套函数,它写在另一个函数的主体内。嵌套函数可以捕获其外部函数的任何自变量,还可以捕获在外部函数内定义的任何常量和变量。

这是一个名为的函数的示例makeIncrementer,其中包含一个名为的嵌套函数incrementer。嵌套incrementer()函数从其周围的上下文中捕获两个值runningTotal和amount。在捕捉到这些值后,incrementer被返回makeIncrementer的闭包的增量runningTotal由amount每次它被调用。

func makeIncrementer(forIncrement amount: Int) -> () -> Int {var runningTotal = 0func incrementer() -> Int {runningTotal += amountreturn runningTotal}return incrementer
}

SwiftUI 内功教程之Closures 09 闭包捕捉价值Capturing Values及经典用法相关推荐

  1. SwiftUI 内功教程之Closures 11 Escaping Closures及经典用法

    SwiftUI 内功教程之Closures 11 Escaping Closures及经典用法 什么是闭包 闭包是独立的功能块,可以在代码中传递和使用.Swift中的闭包类似于C和Objective- ...

  2. macOS SwiftUI开发教程之Scenekit 3D飞机 (项目含源码)

    实战需求 macOS SwiftUI开发教程之Scenekit 3D入门 本文价值与收获 看完本文后,您将能够作出下面的界面 看完本文您将掌握的技能 SCNScene(named: "art ...

  3. SwiftUI 色彩教程之 01什么是色差Color difference

    SwiftUI 色彩教程之什么是色差Color difference 什么是色差Color difference 两种颜色之间的差异或距离是颜色科学中关注的指标.它允许对以前只能用形容词描述的概念进行 ...

  4. SwiftUI AR教程之RealityKit 中将 AR 内容锚定到面部(教程含源码)

    增强现实内容的一个常见用途是将 2D 或 3D 对象叠加在用户的面部之上.让我们谈谈如何在 RealityKit 项目中做到这一点. 让我们从 Xcode 中的增强现实应用程序模板开始: 对于这个项目 ...

  5. 好程序员前端教程之JavaScript闭包和匿名函数的关系详解...

    好程序员前端教程之JavaScript闭包和匿名函数的关系详解 本文讲的是关于JavaScript闭包和匿名函数两者之间的关系,从匿名函数概念到立即执行函数,最后到闭包.下面一起来看看文章分析,希望你 ...

  6. SwiftUI 语音合成与语言识别教程之 03 实现录音文件转文字(含完整项目源码)SFSpeechURLRecognitionRequest

    前期知识回顾 <SwiftUI 语音合成与语言识别教程之 01 Speech框架简介>我们介绍了Speech框架是什么,知道了可以使用Speech进行多语言识别. <SwiftUI ...

  7. HarmonyOS ArkUI开发教程之 01 什么是ArkUI 与Flutter SwiftUI有什么区别

    听说华为发布了一个声明式UI开发框架,自己看过之后发现,感觉以后肯定都是声明式编程的天下了.Google有Flutter,苹果有SwiftUI ,如今华为又有ArkUI了. 什么ArkUI ArkUI ...

  8. macOS SwiftUI 教程之仿Safari浏览器地址栏(教程含源码)

    实战需求 macOS SwiftUI 教程之仿Safari浏览器地址栏 本文价值与收获 看完本文后,您将能够作出下面的界面 看完本文您将掌握的技能 工具栏 .toolbar 搜索框 TextField ...

  9. Kail Linux渗透测试教程之Recon-NG框架

    Kail Linux渗透测试教程之Recon-NG框架 信息收集 信息收集是网络攻击最重要的阶段之一.要想进行渗透攻击,就需要收集目标的各类信息.收集到的信息越多,攻击成功的概率也就越大.本章将介绍信 ...

  10. C#开发Unity游戏教程之Unity中方法的参数

    C#开发Unity游戏教程之Unity中方法的参数 Unity的方法的参数 出现在脚本中的方法,无论是在定义的时候,还是使用的时候,后面都跟着一对括号"( )",有意义吗?看起来最 ...

最新文章

  1. 如何访问docker内php,docker中容器之间如何访问
  2. Spring Batch在大型企业中的最佳实践
  3. 一键cosplay各路动漫人物!快手的这个BlendGAN火了 | NeurIPS 2021
  4. 不同系统之间数据的交互
  5. 刷题总结——烽火传递(单调队列+dp)
  6. 最新可用NOD32免ID升级服务器
  7. java inner static_Java SE Static Inner
  8. 深度学习《VAE-GAN》
  9. 【转载】C++知识库内容精选 尽览所有核心技术点
  10. 每周送新书:Android软件安全、深入浅出Istio、软件架构设计
  11. 单点登录相关问题总结
  12. 骆昊python100天 github_GitHub - Greatandy/Python-100-Days: Python - 100天从新手到大师
  13. OCLint + Infer + Jenkins + SonarQube 搭建iOS代码静态分析系统
  14. 怼人神器(Windows)
  15. vue动态拼接图片路径、img地址拼接问题 [模板字符串]
  16. ES8 - async 和 await
  17. 华为鸿蒙系统研发砸了多少钱,5000研发人员,打造生态系统砸10亿美元,为鸿蒙华为几乎不惜代价!...
  18. [喜闻乐见]期末尻♂总结
  19. 大数据时代需要学习些什么?
  20. Tinymce 编辑器中字数统计问题,统计所有字符(包括数字,字母。。。)

热门文章

  1. abaqus三点弯曲有限元模拟
  2. 我的2018---艰难的一年
  3. Web前端之响应式 Gulp 中文网
  4. 出海必读,汇量科技联合SensorTower发布《2022国内手游出海白皮书》
  5. 球相交的表面积并/体积并
  6. 教你使用IL2CppDumper从Unity il2cpp的二进制文件中获取类型、方法、字段等(反编译)
  7. [工作报告]转载:程序员绩效总结_年终总结怎么写?
  8. could not initialize proxy - the owning Session was closed解决方法!
  9. 记忆中的巷子与老房子
  10. Writeup-GKCTF-Misc题:Harley Quinn