zoukankan      html  css  js  c++  java
  • Swift 编程思想,第一部分:拯救小马

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

    Swift 编程思想

    链接

    http://alisoftware.github.io/swift/2015/09/06/thinking-in-swift-1/

    http://alisoftware.github.io/swift/2015/09/20/thinking-in-swift-2/

    http://alisoftware.github.io/swift/2015/10/03/thinking-in-swift-3/

    http://alisoftware.github.io/swift/2015/10/11/thinking-in-swift-4/

    http://swift.gg/2015/09/29/thinking-in-swift-1/

    http://swift.gg/2015/10/09/thinking-in-swift-2/

    http://swift.gg/2015/10/20/thinking-in-swift-3/

    http://swift.gg/2015/10/22/thinking-in-swift-4/

    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<T>上的方法
        map( transform: T ->          U  ) -> Array<U>
    flatMap( transform: T ->    Array<U> ) -> Array<U>
    • 在可选类型上应用
    // 作用在Optional<T>上的方法
        map( transform: T ->          U  ) -> Optional<U>
    flatMap( transform: T -> Optional<U> ) -> Optional<U>

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

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

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

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

    undefined
  • 相关阅读:
    如何修补软件、系统漏洞?
    轻松学习Linux之本地安装系统
    看程序体验缓冲区溢出漏洞
    企业网管软件实战之SolarWinds LANsurveyor
    Android项目开发遇到的问题(64K的错误)的解决之路,从入坑到出坑
    史上最佳 Mac+PhpStorm+XAMPP+Xdebug 集成开发和断点调试环境的配置
    [noip2011]计算系数+二项式定理证明
    [nowcoder5668H]Sort the Strings Revision
    (动态规划)导弹防御
    nyoj 79 拦截导弹
  • 原文地址:https://www.cnblogs.com/xilifeng/p/4922259.html
Copyright © 2011-2022 走看看