import UIKitvar str = "Hello, playground"//1.1闭包,与oc中的block类似
//方法声明: (参数) -> 返回值 {函数体}
//闭包声明:{(参数) -> 返回值 in 函数体}
//可以在代码中使用或者用来作为参数传值。
let names = [5,2,10,23,4]let namesSort = names.sorted { (int1,int2) ->Bool inreturn int1 > int2
}
print(namesSort)//上面等同于下面
func sortMthod(num1:Int, num2:Int)-> Bool{return num1 > num2
}
print(names.sorted(by: sortMthod))//1.2 可以隐式的返回
//隐式就类似于limbda表达式
//单行表示闭包,可以通过隐藏return关键字来隐式返回单行表达式结果
let hiddenSort = names.sorted{ num1,num2 -> Bool in num1 > num2}
print("隐式:\(hiddenSort)")//1.3 参数名称缩写
//直接通过 $0,$1来顺序调用闭包的参数
//省略了in关键字
let nameSortFive = names.sorted(){return $0 < $1
}let nameSortsix = names.sorted{$0 < $1}
print("参数名称缩写:\(nameSortFive),   \(nameSortsix)")//swift可以推断参数和返回值的类型,因此基本类型并不需要作为闭包表达式定义中的一部分
//有的类型都可以被直接推断,返回箭头->和参数也可以省略//1.4尾随闭包  增强函数的可读性
//当函数的最后一个参数是闭包,可以将闭包放在方法名后面_ = names.sorted() { (int1,int2) ->Bool inreturn int1 > int2
}// ()->() 函数类型  无参数 无返回值
func TestMethod(bibaoMethod:()->()){bibaoMethod()print("接收闭包数据")
}TestMethod(bibaoMethod: {print("闭包正规写法")
})TestMethod() {print("闭包尾随写法")
}//如果函数只想要闭包表达式一个参数,当使用尾随方式时候
//可以把()省略
TestMethod {print("闭包尾随简写")
}//oc block有内存泄露,闭包也存在这个问题
//使用weak释放//2.1  枚举enum CompassPoint{//oc默认枚举成员赋值 0 , 1, 2 ... swift没有默认赋值case North, N  //多个用,隔开case Southcase Eastcase West
}print(CompassPoint.North)//枚举赋值
var direction = CompassPoint.North
direction = .East // 不需要枚举,直接 . 加上枚举类型,可以推断出来//2.2 相关值绑定
enum Barcode{case NumberCodes(Int, Int)case StringCodes(String)
}var productBarcode = Barcode.NumberCodes(122, 1233453)
var productStringcode = Barcode.StringCodes("小米")switch productBarcode {
case .NumberCodes(let system,let ident):print("数字条形码:系统编号\(system)  物品提示:\(ident)")
case .StringCodes(let code):print("sdfsfsdf\(code)")
}//2.3 原始值rawValue(带有默认值)enum Month: Int {case January = 1case Februarycase Marchcase Aprilcase Maycase Junecase Julycase Augustcase Septembercase Octobercase Novembercase December
}let value = Month.February//rawValue是原始值,即switch value {
case .January:print("一月 \(value.rawValue)") //rawValue为1
case .February:print("二月 \(value.rawValue)")
case .March:print("三月 \(value.rawValue)")
case .April:print("四月 \(value.rawValue)")
case .May:print("五月 \(value.rawValue)")
case .June:print("六月 \(value.rawValue)")
case .July:print("七月 \(value.rawValue)")
case .August:print("八月 \(value.rawValue)")
case .September:print("九月 \(value.rawValue)")
case .October:print("十月 \(value.rawValue)")
case .November:print("十一月 \(value.rawValue)")
case .December:print("十二月 \(value.rawValue)")
default:print("------")
}

swif4基础学习(4)- 闭包、枚举相关推荐

  1. Java基础学习——第十章 枚举类注解

    Java基础学习--第十章 枚举类&注解 一.枚举类(enum) 1. 枚举类的概念 枚举类:类的对象只有有限个,确定的 线程状态:创建.就绪.运行.阻塞.死亡 当需要定义一组常量时,强烈建议 ...

  2. 判断字段是否与枚举相同_Scala基础学习九之枚举和Trait了解

    scala枚举 枚举:Scala不支持enum关键字,通过继承Enumeration类实现枚举 枚举通常用来定义已知数量的常量,比如月份,星期,季节等等 定义一个星期的枚举 并定义一个打印所有值的方法 ...

  3. swif4基础学习(7)-其它

    import UIKitvar str = "Hello, playground"//逃逸闭包 //闭包做为函数的参数传递时,可能会在函数体结束后被调用,这个闭包逃离了这个函数体的 ...

  4. Unity超基础学习笔记(二)

    Unity超基础学习笔记(二) 1. 基本数据类型的扩展 之前在K12中学习了一些基本的数据类型,实际上C#支持更多的数据类型.如下: 注意无符号整型数和有符号整型数的表示范围,例如: int 能表示 ...

  5. Java基础学习:尚硅谷项目三 开发团队调度软件

    Java基础学习:尚硅谷项目三 开发团队调度软件 一.软件功能与结构设计 1. 软件功能 该软件实现以下功能: 软件启动时,根据给定的数据创建公司部分成员列表(数组) 根据菜单提示,基于现有的公司成员 ...

  6. 「季淳卿」零基础学习 MyBatis-Plus-springBoot(笔记总结)

    hello,大家好.这里是季淳卿,━(`∀´)ノ亻!,MyBatis-Plus-springBoot 零基础学习笔记总结 文末有代码和.md文件可以下载(小伙伴们可以自取) MyBatis-Plus- ...

  7. SpringMVC基础学习之Restful风格的简单使用

    前言: 小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师. 这个SpringM ...

  8. Kotlin基础学习(1)

    Kotlin基础学习(1) 本文主要讲解kotlin的部分基础知识,并不是全部基础. 提示:纯属个人理解,如有理解错误,欢迎留言指正批评. 一.Null检查机制 kotlin对于声明可为空的参数,使用 ...

  9. java基础学习 --- 第二节 变量、数据类型和运算符

    java基础学习 - 第二节 变量.数据类型和运算符 一.变量 1.变量就是会发生改变的数据,程序运行时,这些数据以变量的形式被保存到计算机的内存中.如图 2.使用变量的步骤:     声明变量 - ...

最新文章

  1. Boost:矩阵转置的测试程序
  2. 4种方法让SpringMVC接收多个对象(转:http://blog.csdn.net/lutinghuan/article/details/46820023)
  3. 请求数据分析 xpath语法 与lxml库
  4. Flask --- 框架快速入门
  5. 地铁看java书女生_地铁上背单词的女孩
  6. T-SQL with关键字
  7. 计算机网络之数据链路层:13、令牌传递协议、轮询协议-轮询访问介质访问控制
  8. 【Vegas原创】使用javascript实现两个listbox中的添加、删除
  9. springboot通过各种不同类型参数获取容器中的bean工具类
  10. CSS Grid中的陷阱和绊脚石
  11. mac下selenium+python环境搭建
  12. linux最小化连接开放wifi,CentOS最小化安装后启用无线连接网络
  13. html5 jquery音乐播放器,play()和pause()不起作用
  14. PASCAL VOC数据集分析及下载、解压
  15. 百度推出新版团购导航 对团购导航造成冲击
  16. 【ESP32之旅】ESP32C3 Arduino库使用方法
  17. 大数据学习基础知识总纲
  18. android虚拟手机云之二:应用多开
  19. 在为订单 7000009确定实际成本中出错
  20. 那些年,我们常见的那些人

热门文章

  1. 百度地图+mapv聚合实例
  2. 医疗报告PPT模板-优页文档
  3. 升级域控制器:向现有域添加 Windows Server 2008 或 Windows Server 2008 R2 域控制器的 Microsoft 支持快速入门...
  4. 微信小程序悬浮窗功能实现
  5. db2与mysql编目_编目DB2数据库(原创)
  6. 在真机上执行react-native run-android出现com.android.ddmlib.InstallException: Failed to finalize session错误
  7. 最新vue+vant移动端电商项目
  8. 咪咕盒子链接服务器失败_搭建饥荒专属服务器教程
  9. 我的世界java雪村种子_我的世界百年难遇的罕见种子 神秘雪村与变异雪屋你见过吗_高手游...
  10. TI AM335x 可编程实时模块(PRUSS)详解