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
  • 相关阅读:
    HDU 2888 Check Corners (模板题)【二维RMQ】
    POJ 3264 Balanced Lineup(模板题)【RMQ】
    poj 3368 Frequent values(经典)【RMQ】
    SPOJ RPLN (模板题)(ST算法)【RMQ】
    UVA 796 Critical Links(模板题)(无向图求桥)
    UVA 315 Network (模板题)(无向图求割点)
    POJ 2029 Get Many Persimmon Trees (模板题)【二维树状数组】
    poj 3067 Japan 【树状数组】
    POJ 2481 Cows 【树状数组】
    POJ 1195 Mobile phones【二维树状数组】
  • 原文地址:https://www.cnblogs.com/xilifeng/p/4922259.html
Copyright © 2011-2022 走看看