博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift 编程思想 阅读笔记
阅读量:6244 次
发布时间:2019-06-22

本文共 1471 字,大约阅读时间需要 4 分钟。

Swift 编程思想,第一部分:拯救小马

Swift 编程思想

链接

Swift 编程思想,第一部分:拯救小马

问题:

  • 隐式解析可选类型
  • 强制转型
  • 强制使用try
  • 数组的使用

方案:

  • 使用guard xxx else
  • if let xx=yy{}
  • [ListItem],数组的创建,返回,引用

Swift 编程思想,第二部分:数组的 Map 方法

主要讲了怎么使用map,faltMap

  • map ,U->T,对数组每个元素操作,形成新的数据
  • faltMap,U->T? 某个元素失败,不会加入最后的数组.

Swift编程思想 第三部分:结构体和类

  • struct 值传递
  • class 引用类型

Swift的结构体(structs)和类(Class)具有相同的功能 - 除了继承 - 结构体是值类型(value-types) (所以每一次变量赋值都是通过值拷贝的形式,与Int类型很相像),而类属于引用类型(reference-types),以引用方式传递而非值拷贝,这和Objective-C(以及OC中无处不在的难看的*,也代表着引用)中一样。

  • 联合操作符

??操作符和ObjC的opt ?: val表达式很像,了解它的人都知道:opt ?? val如果在opt非空的时候返回它的值,如果是nil的话会返回val。这意味着如果opt是T?类型,val则必须是T类型,整个表达式的结果也会是T类型。

Swift 编程思想 第四部分:全部使用map方法

  • 数组应用map方法
// 作用在Array
上的方法 map( transform: T -> U ) -> Array
flatMap( transform: T -> Array ) -> Array
  • 在可选类型上应用
// 作用在Optional
上的方法 map( transform: T -> U ) -> Optional
flatMap( transform: T -> Optional ) -> Optional

那么map方法到底对Optional类型(也叫做T?)做了什么?

其实很简单:和作用在Array上的一样,map方法将Optional中的内容取出来,用指定的transform: T->U方法做出转换,然后把结果包装成一个新的Optional

如果细想一下,这和Array.map做的事情十分相似:这个方法对Array(与之相应的是Optional)中的每个元素使用transform函数转换,并将转换过的值封装在一个新的Array中(与之相应的是Optional),作为结果返回

  • 把 init 当闭包来用
let iconName = itemDesc["icon"] as? Stringlet icon = iconName.flatMap { UIImage(named: $0) }
let iconName = itemDesc["icon"] as? Stringitem.icon = iconName.flatMap(UIImage.init)
let iconName = itemDesc["icon"] as? Stringitem.icon = iconName.flatMap { imageName in UIImage(named: imageName) }

undefined

转载地址:http://cosia.baihongyu.com/

你可能感兴趣的文章
Python按行读取文件
查看>>
Linux Shell从一个文件去掉包含在另一个文件的内容
查看>>
Linux CentOS6.5下编译安装MySQL 5.6.16
查看>>
CentOS 7 上systemctl 的用法
查看>>
极验验证的滑动验证码破解
查看>>
【深入Linux块设备驱动层次之一】整体层次
查看>>
Linux登录安全及用户操作审计 ,linux下清理日志脚本
查看>>
一个JS文件中引入另一个JS文件
查看>>
Laravel中pluck的使用——返回指定的字段值信息列表
查看>>
TCP Segment Offload(TSO)的实现原理浅析
查看>>
Android官方开发文档Training系列课程中文版:多样屏幕之支持不同的屏幕尺寸
查看>>
Redmine部署
查看>>
五种开源协议比较:BSD,Apache,GPL,LGPL,MIT
查看>>
Linux上编译hadoop-2.7.1的libhdfs.so和libhdfs.a
查看>>
mysql中函数greatest 与MAX区别
查看>>
ORA-01843: 无效的月份
查看>>
Centos网络管理(三)-网络配置相关
查看>>
php-fpm的pool、php-fpm慢执行日志、open_basedir、php-fpm进程管理
查看>>
编写iptables模块实现不连续IP地址的DNAT-POOL
查看>>
IOS真机测试
查看>>