关于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 ...
最新文章
- 测试php连接mysql
- 获取input相同名字的元素的值
- AspnetCore 2.0 自动API文档生成组件,支持protobuffer
- python运行出现数据错误_Python运行出错情况
- Value of key '' is not a string! Cannot translate the value of keypath ''. Use the v
- 6. 成交量基础分析
- Jenkins+maven+SVN构建java项目中遇到的问题及解决
- 虚化4独立游戏开发第一章:策划案
- 电脑使用 Dolby Audio提示将耳机或扬声器插入系统的音频插孔,以启用Dolby Audio
- 按键精灵UI界面的实例代码以及调用
- 这是我见过最好的Python教程:十分钟带你认识Python
- 工具篇:TailScale免费实现远程设备互连(无费用方案,亲测,零基础安装),支持手机、Windows或linux系统、NAS
- 血污夜之仪式秘密巫师实验室收集策略
- 全网最全的唐诗,让你了解唐诗。让你明白唐诗皎洁的月光洒到床前,迷离中疑是秋霜一片。仰头观看明月呵明月,低头乡思连翩呵连翩。国破山河在,城春草木深。感时花溅泪,恨别鸟惊心。烽火连三月,家书抵万金。白头搔
- [工具]网络流量控制软件NetLimiter
- 这年头,能坐上火箭的东西不多啊 Java版本号算一个
- iBase4J nginx配置
- 抓紧时间,先考张CCIE-EI证书
- 第三方支付下半场:强监管料将持续,下一片“蓝海”在哪儿?
- go设置后端启动_名企实习项目|后端开发岗go微服务实战项目启动,大牛导师带你拿offer!...