iOS开发Swift-闭包

这篇具有很好参考价值的文章主要介绍了iOS开发Swift-闭包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.闭包表达式语法

{ (参数) -> return 类型 in
    //内容
}
let names = ["C", "A", "E", "B", "D"]
func back(_ s1: String, s2: String) -> Bool {
    return s1 > s2   //(B > A, C > B)
}
//闭包后: var reversedNames.sorted(by: { (s1: String, s2: String) -> Bool in return s1 > s2 })

 2.根据上下文推断类型

reversedNames = names.sorted(by: {s1, s2 in return s1 > s2})
//传入参数的类型确定,: String, : String可省略。传出参数的类型确定: -> Bool可省略

3.单表达式闭包的隐式返回

reversedNames = names.sorted(by: {s1, s2 in s1 > s2})
//只包含一个表达式,省略return之后无歧义,所以可以省略return。

4.参数名称缩写

reversedNames = names.sorted(by: {$0 > $1})
//可按照$0, $1, $2顺序调用闭包函数

5.运算符方法

reversedNames = names.sorted(by: >)

6.尾随闭包

将很长的闭包表达式作为最后一个参数传递给函数,不用写出他的参数标签。

func some(do: () -> Void) {
    //代码
}
//不使用尾随闭包调用函数
some(do: {
    //代码
}
//使用尾随闭包调用函数
some() {
    //语句
}
reversedNames = names.sorted() {$0 > $1}
//sorted为函数的唯一方法时,可省略括号
reversedNames = names.sorted {$0 > $1}

7.值捕获

嵌套函数可捕获其外部函数所有参数、变量、常量。

8.逃逸闭包

当一个闭包作为一个参数传到一个函数中,但闭包在函数返回之后才被执行,则称闭包逃逸。

标注@escaping,表示允许闭包逃逸。

var comp: [() -> Void] = []
func some(comp1: @escaping () -> Void) {
    comp.append(comp1)
}

9.自动闭包

 包装传递给函数作为参数的表达式。不接受参数,只返回值。

 延迟求值。直到调用这个闭包,代码才被执行。文章来源地址https://www.toymoban.com/news/detail-674365.html

var cuL = ["C", "A", "E", "B", "D"]
print(cuL.count)    //5
let cuP = {cuL.remove(at: 0)}
print(cuL.count)    //5。闭包未运行
cuP()     //调用闭包
print(cuL.count)    //4。闭包已运行,第一个值被删除。

到了这里,关于iOS开发Swift-闭包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • iOS开发Swift-类型转换

    1.Int或Double转字符串 2.Double转Int(去掉小数点后面的) 3.Int转Double 4.向上转型 5.向下转型

    2024年02月09日
    浏览(28)
  • iOS开发Swift-基础部分

    系统可通过赋初始值进行自动推断。 平时可加可不加,同一行中有两句话必须加。 Int           UInt(最好不用) Double 64位 很大/高精度情况下使用 15位小数 Float 32位 对精度要求不高的情况下用 6位小数 十进制数   17 二进制 0b前缀 0b10001 八进制 0o前缀 0o21 十六进制 0x前缀

    2024年02月11日
    浏览(37)
  • iOS开发系列--Swift语言

    Swift是苹果2014年推出的全新的编程语言,它继承了C语言、ObjC的特性,且克服了C语言的兼容性问题。Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在其中你可以看到C#、Java、Javascript、Python等多种语言的影子。同时在2015年的WWDC上苹果还宣布

    2024年02月06日
    浏览(37)
  • iOS开发Swift-控制流

    (1)复合匹配 (2)区间匹配 (3)元组匹配 (4)值绑定匹配 (5)where continue, break, fallthrough, return, throw continue: 停止本次循环,开始下次循环 break: 立即结束整个控制流。可以使用break忽略switch的分支。 fallthrough贯穿: switch中的case加入贯穿,case会穿透到下一个case/ default。

    2024年02月11日
    浏览(35)
  • iOS开发Swift-集合类型

    集合基本类型:数组 Array (有序), 集合 Set (无序不重复), 字典 Dictionary (无序键值对) (1)数组的表示 (2)创建空数组 (3)带值数组 (4)两数组相加创建数组 (5)字面量创造数组 (6)访问数组 (7)添加 (8)修改 (9)删除 (10)遍历 同时需要索引和值时: (1)集合的表示 (2)构造一个集合 (3)字面

    2024年02月11日
    浏览(36)
  • iOS(一):Swift纯代码模式iOS开发入门教程

    1.修改 AppDelegate.swift 和 ViewController.swift 文件 2.删除 SceneDelegate.swift 和 Main.storyboard 文件 3.修改如图所示项 安装 CocoaPods 初始化项目(添加 Podfile 配置文件) 修改 Podfile 文件 安装 打开 ExDemoApp.xcworkspace 项目并向 ViewController.swift 添加示例代码 运行效果 安装 QMUIKit 方式一:触发

    2024年02月09日
    浏览(29)
  • iOS开发Swift-基本运算符

    一元 单一操作对象 -a    !b    c! 二元 两个操作对象 2 + 3 三元 三目运算符 a ? b : c 赋值运算符不返回任何值,所以 if x = y { ... } 无效。 +   -   *   / 默认不允许数值运算中溢出。 溢出运算符:   a + b a % b = 余数 a = (b * 倍数) + 余数 所以a % b = a % -b ==     !=         

    2024年02月11日
    浏览(34)
  • iOS开发Swift-1-Xcode创建项目

    1.创建项目 双击Xcode App,选择Create a new Xcode project。  选择创建一个iOS普通的App项目。选择Single View App,点击Next。  填写项目名,组织名称等,点击next。  选择好文件的存储路径,点击create。  2.为前端添加组件 点击Main,选中View,在右下角show the Object library中找到label组件,

    2024年02月10日
    浏览(26)
  • iOS开发Swift-字符串与字符

     前一个\\\"\\\"\\\"前和后一个\\\"\\\"\\\"后无换行  想要实现在代码编写时换行而在实际运行后不换行:  (1)转义字符 \\0 空字符 \\\\ 反斜线 t 水平制表符 n 换行符 r 回车符 \\\" 双引号 \\\' 单引号 要在\\\"\\\"\\\"中使用(\\\"\\\"\\\")时,必须至少写一个转义符。例如 \\\"\\\"\\\" 或 \\\"\\\"\\\" (2)Unicode标量 u{24} 两位十六进制

    2024年02月11日
    浏览(29)
  • iOS开发Swift-5-自动布局AutoLayout-摇骰子App

    1.在iOS坐标系中,以向左、向下为正方向。图片以左上角为基准点。  2.打开之前的摇骰子App,对它的界面做一些适应所有iPhone机型的效果。  3.先对上方logo做一个y轴约束和一个宽高约束。 宽高约束:  水平居中:  对y轴进行约束。将虚线点击变红色实线,表示固定相邻视图

    2024年02月10日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包