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 = [, , , ]
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 & ) == {
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 & ) ==
}
print("inums = \(inums)")
看起来确实很方便吧~
Swift编程语言SequenceType协议中的一些比较有用的接口的更多相关文章
- Swift编程语言中如何实现自定义类型的for-in循环(基于Swift 2.2)
我们在Swift编程语言中常常会用到for-in循环(在编程语言术语中又被称为for-each).此外,从Swift 2.2版本起,for循环将只支持for-in形式,而不支持for i = 0; i ...
- iOS中生成并导入基于Swift编程语言的Framework
从iOS 8.0开始就引入了framework打包方式以及Swift编程语言.我们可以主要利用Swift编程语言将自己的代码打包成framework.不过当前Xcode 7.x在自动导入framewo ...
- Swift编程语言中的方法引用
由于Apple官方的<The Swift Programming Guide>对Swift编程语言中的方法引用介绍得不多,所以这里将更深入.详细地介绍Swift中的方法引用. Swift与 ...
- Swift中声明协议中的class关键字的作用
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 最近在Cocos2D编程for Swift中看到以下一个代码片 ...
- [转]Swift 编程语言入门教程
今天在网上看到一篇非常好的教程,分享给大家 原文地址:http://gashero.iteye.com/blog/2075324 目录 1 简介 2 Swift入门 3 简单值 4 控 ...
- Swift 编程语言【转载+整理】
原文地址 在过去的几年中,移动应用程序风靡全世界并且已经改变了我们使用互联网进行工作或者休闲的方式.为了创建移动应用程序,各种技术应运而生,同时开发过程也开始将其作为一等公民来对待.尽管移动似乎已经无 ...
- [Swift]编程语言:文档修订历史
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Swift -POP( 面向协议编程)与OOP(面向对象编程)
面向协议编程(Protocol Oriented Programming,简称POP),是Swift的一种编程范式,Apple于2015年WWDC提出的,如果大家看Swift的标准库,就会看到大量PO ...
- Swift编程语言资料合集
在本周二凌晨召开的苹果年度开发者大会WWDC上,苹果公司推出了全新的编程语言Swift.Swift 基于C和Objective-C,是供iOS和OS X应用编程的全新语言,更加高效.现代.安全,可以提 ...
随机推荐
- mysql主主复制(双主复制)配置步骤
以前我们介绍的都是主从复制,这里给各位介绍一个双主复制了,下面都希望两个主服务器数据自动复制的话可参考一下此文章. MySQL主主复制结构区别于主从复制结构.在主主复制结构中,两台服务器的任何一台 ...
- 【技术贴】VirtualBox给VDI格式的虚拟机扩容
新建立了一个虚拟机用来装一些比较烦的软件,比如数据库什么的,但是初始的时候硬盘放小了,找了很久才找到解决方案(我的数据库是动态大小的): 1.直接在虚拟机关闭的状态下,在设置-->存储--> ...
- C# 图片盖章功能实现,支持拖拽-旋转-放缩-保存
实现图片盖章功能,在图片上点击,增加“图章”小图片,可以拖拽“图章”到任意位置,也可以点击图章右下角园框,令图片跟着鼠标旋转和放缩. 操作方法:1.点击增加“图章”2.选中移动图标3.点中右下角放缩旋 ...
- WPF之 DataGrid数据绑定
DataGrid控件是显示数据的控件,从一个对象集合获取信息并在具有行和单元格的网格中显示信息.每行和一个单独的对象相对应,并且每列和该对象中的一个属性相对应. DataGrid控件添加了许多在WPF ...
- day8---多线程socket 编程,tcp粘包处理
复习下socket 编程的步骤: 服务端: 1 声明socket 实例 server = socket.socket() #括号里不写 默认地址簇使用AF_INET 即 IPv4 ...
- ios9关闭系统自动更新
链接:https://www.zhihu.com/question/37297197/answer/104363172 https://www.zhihu.com/question/37297197/ ...
- 【基础知识】.Net基础加强06天
一. 垃圾回收 1. 垃圾回收的目的:提高内存的利用效率. 2. 垃圾回收器: 只回收托管堆中的内存资源,不回收其他资源(数据库连接.文件句柄.网络端口等): 3. 什么时候垃圾回收? a) 当对象没 ...
- 用c#开发微信 (12) 微统计 - 阅读分享统计系统 2 业务逻辑实现
微信平台自带的统计功能太简单,有时我们需要统计有哪些微信个人用户阅读.分享了微信公众号的手机网页,以及微信个人用户访问手机网页的来源:朋友圈分享访问.好友分享消息访问等.本系统实现了手机网页阅读.分享 ...
- UnicodeDecodeError while using json.dumps()
UnicodeDecodeError 系统.文件.vim全部设置为utf-8 export LANG=zh_CN.UTF8 # coding:utf-8 json.dumps(content, ens ...
- C语言宏高级用法 [总结]
1.前言 今天看代码时候,遇到一些宏,之前没有见过,感觉挺新鲜.如是上网google一下,顺便总结一下,方便以后学习和运用.C语言程序中广泛的使用宏定义,采用关键字define进行定义,宏只是一种简 ...