zoukankan      html  css  js  c++  java
  • Swift编程语言SequenceType协议中的一些比较有用的接口

    在Swift编程语言中,大部分容器类(比如Array、Dictionary)都实现了SequenceType协议。SequenceType协议中有不少有趣且简便的方法可用来实现我们不少实际需求。这里将简单介绍其中的map、flatmap、reduce、以及filter方法。

    map的原型是:@warn_unused_result func map<T>(@noescape transform: (Self.Generator.Element) throws -> T) rethrows -> [T]

    简单来说,就是含有一个函数类型形参,返回为[T]数组的函数。这个函数的功能是将指定transform函数所返回的元素组合起来,构成一个新的数组。transform函数的类型为:(数组元素类型) -> 自定义返回类型。

    flatmap与map类似,只不过其transform函数所返回的类型是一个optional。然后最终返回的数组是不包含空值的新数组。

    reduce方法是通过一个联结函数,将数组中所有元素以某一指定的联结方式最终变为一个标量值。

    下面的代码简单介绍了这几种接口的使用与效果:

            let arr = [1, 2, 3, 4]
            
            let nums = arr.map() { (elem: Int) -> Float in
                return Float(elem) + 2.0
            }
            print("nums = (nums)")
            
            let nums2 = arr.flatMap() { (elem: Int) -> Float? in
                if (elem & 1) == 1 {
                    return Float(elem) + 1.5
                }
                else {
                    return nil
                }
            }
            print("nums2 = (nums2)")
            
            let f = arr.reduce(Float(0.1)) { (src: Float, elem: Int) -> Float in
                return src * Float(elem)
            }
            print("f = (f)")
            
            let inums = arr.filter() { (elem: Int) -> Bool in
                return (elem & 1) == 0
            }
            print("inums = (inums)")

    看起来确实很方便吧~

  • 相关阅读:
    Oracle导入导出命令
    深入理解JSP/Servlet Session会话管理机制
    Weblogic domain密码的重置方法
    RPC关键要点
    Ubuntu如何配置Telnet服务器
    Win7如何解决telnet不是内部或外部命令!
    Linux系统下的文件权限
    虚拟机系统ubuntu安装VMWare Tools
    SQL模糊查询 LIKE
    Ubuntu下安装SSH
  • 原文地址:https://www.cnblogs.com/zenny-chen/p/5622066.html
Copyright © 2011-2022 走看看