关于Swift中的泛函数find的问题
对于一个数组Array,我们往往需要判断其是否包含某个子项,又或者要查找某个子项是否在这个数组中。
假设有这样一个包含坐标的数组
1 var pointArray:[CGPoint] = [CGPoint(x: 2,y: 3),CGPoint(x: 4,y: 5),CGPoint(x: 2,y: 7),CGPoint(x: 3,y: 8),CGPoint(x: 2,y: 9),CGPoint(x: 0,y: 3)]
如何判断该数组是否包含某个点,这个点的X坐标为3呢?
var a = contains(pointArray, {$0.x == 3})
contains就是一个谓词函数,$0表示复用的数组元素,这个是swift的约定
contains只能返回是否包含该子项,不能返回该子项,如果需要返回该子项所在的索引用find函数
比如查找(4,5)这个点在数组中的索引序号
var index = find(pointArray, CGPoint(x:4,y:5))
运行之后,index = 1
如果你想要查找上面的X坐标为3的点,怎么查询?C#里边有linq语句,和数据库查询类似的语句,无所不能,Swift可没有这么强大,
提供的find函数还不支持谓词的查找(可能以后会加上)
其实自己写这个函数也很简单:
func findIndex<S : SequenceType, L : BooleanType>(seq: S, predicate: (S.Generator.Element) -> L) -> Int?{
for (index,element) in enumerate(seq){
if predicate(element){
return index
}
}
return nil
}
var b = findIndex(pointArray, predicate: {$0.x == 3})
转载于:https://www.cnblogs.com/JimmyBright/p/4367441.html
关于Swift中的泛函数find的问题相关推荐
- 解决Swift中present(uiImagePickerController,animated: true,completion: nil)闪退的问题
swift中开发选择图片上传,会使用到Tap Gesture Recognizer控件,对应 UITapGestureRecognizer API,以下是代码示例(取自IOS developer li ...
- Swift 中使用 SQLite——批量更新(事务处理)
本文是Swift 中使用 SQLite系列的收官之作,介绍一下在数据库中的批量更新. 事务 在准备做大规模数据操作前,首先开启一个事务,保存操作前的数据库的状态 开始数据操作 如果数据操作成功,提交事 ...
- Swift 中使用 SQLite——打开数据库
关于Swift中使用SQLite,接下来可能会分别从打开.增.删.改.查,几个方面来介绍SQLite的具体使用,这一篇重点介绍一下如何打开. 定义全局数据库访问句柄 /// 全局数据库访问句柄 pri ...
- 探索 Swift 中的 MVC-N 模式
作者:Marcus Zarra(twitter:@mzarra) Marcus 将会为大家介绍一种设计模式,他曾经在那些需要从互联网进行大量频繁数据请求的 iOS 应用当中使用此设计模式.这个设计采用 ...
- Swift 中的内存管理详解
这篇文章是在阅读<The Swift Programming Language>Automatic Reference Counting(ARC,自动引用计数)一章时做的一些笔记,同时参考 ...
- 怎样在swift中创建CocoaPods
本文由yake_099(博客)翻译自raywenderlich,作者:Joshua Greene 原文:How to Create CocoaPods with Swift 你可能对一些比较著名的开源 ...
- Swift中编写单例的正确方式
本文由CocoaChina译者leon(社区ID)翻译自krakendev 原文:THE RIGHT WAY TO WRITE A SINGLETON 转载请保持所有内容和链接的完整性. 在之前的帖子 ...
- Swift中依赖注入的解耦策略
原文地址:Dependency Injection Strategies in Swift 简书地址:Swift中依赖注入的解耦策略 今天我们将深入研究Swift中的依赖注入,这是软件开发中最重要的技 ...
- swift设置启动图不现实_如何通过装饰房屋来开始在Swift中使用增强现实
swift设置启动图不现实 by Ranadhir Dey 由Ranadhir Dey 如何通过装饰房屋来开始在Swift中使用增强现实 (How to get started with augmen ...
- swift视图容器_如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图...
swift视图容器 by Lee Dowthwaite 通过李道思韦特 如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图 (How to create a beautif ...
最新文章
- 升级bios_ThinkPad如何升级BIOS?我来教你!
- 取消java相关网络协议_java相关网络协议可以关掉吗
- Python3 From Zero——{最初的意识:007~函数}
- 高级组合技打造“完美” 捆绑后门
- z变换判断稳定性和因果性_数字信号处理(王娜)-中国大学mooc-题库零氪
- linux中的fbset工具,Fluxbox (简体中文)
- [转] [Elasticsearch] 数据建模 - 处理关联关系(1)
- APP审核关于3.2.1金融资格的审核回复苹果
- android实现应用程序只有在第一次启动时显示引导界面
- MapXtreme2005开发的经典问题
- Hibernate获取'上一条'和'下一条'记录
- java futuretask 状态_6.3 FutureTask基本操作总结 - JAVA 并发知识点总结
- 手机 html宽度超出屏幕,解决华为手机用rem单位,内容超出屏幕宽度问题
- 求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum)
- 小米电视机如何重新匹配遥控器
- StringTemplate模板引擎
- 【题解】A1004 求三个数的平均数
- Panda 用法( 基础 )
- Python 3如何安装OpenCV
- java获取字典所有的key_java字典,多层字典,斗地主发牌,实例展示
热门文章
- 【C/C++】转义字符大全
- CoreImage的使用及常见滤镜工具(一)
- VC6.0 Dialog 如何添加 WM_ERASEBACKGROUND 消息
- 2019/7/25 node.js
- 数据结构(树状结构-树)
- Initramfs 原理和实践
- Ubuntu14 Could not open file /var/lib/dpkg/status - open
- java设计模式在java中的应用
- Object中的clone方法
- 【BZOJ 1047】[HAOI2007]理想的正方形