• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift编程语言SequenceType协议中的一些比较有用的接口

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在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)")

 

看起来确实很方便吧~


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Welcome-to-Swift-24高级运算符(AdvancedOperators)发布时间:2022-07-13
下一篇:
Swift常量、变量、条件判断发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap