对于一个数组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的问题相关推荐

  1. 解决Swift中present(uiImagePickerController,animated: true,completion: nil)闪退的问题

    swift中开发选择图片上传,会使用到Tap Gesture Recognizer控件,对应 UITapGestureRecognizer API,以下是代码示例(取自IOS developer li ...

  2. Swift 中使用 SQLite——批量更新(事务处理)

    本文是Swift 中使用 SQLite系列的收官之作,介绍一下在数据库中的批量更新. 事务 在准备做大规模数据操作前,首先开启一个事务,保存操作前的数据库的状态 开始数据操作 如果数据操作成功,提交事 ...

  3. Swift 中使用 SQLite——打开数据库

    关于Swift中使用SQLite,接下来可能会分别从打开.增.删.改.查,几个方面来介绍SQLite的具体使用,这一篇重点介绍一下如何打开. 定义全局数据库访问句柄 /// 全局数据库访问句柄 pri ...

  4. 探索 Swift 中的 MVC-N 模式

    作者:Marcus Zarra(twitter:@mzarra) Marcus 将会为大家介绍一种设计模式,他曾经在那些需要从互联网进行大量频繁数据请求的 iOS 应用当中使用此设计模式.这个设计采用 ...

  5. Swift 中的内存管理详解

    这篇文章是在阅读<The Swift Programming Language>Automatic Reference Counting(ARC,自动引用计数)一章时做的一些笔记,同时参考 ...

  6. 怎样在swift中创建CocoaPods

    本文由yake_099(博客)翻译自raywenderlich,作者:Joshua Greene 原文:How to Create CocoaPods with Swift 你可能对一些比较著名的开源 ...

  7. Swift中编写单例的正确方式

    本文由CocoaChina译者leon(社区ID)翻译自krakendev 原文:THE RIGHT WAY TO WRITE A SINGLETON 转载请保持所有内容和链接的完整性. 在之前的帖子 ...

  8. Swift中依赖注入的解耦策略

    原文地址:Dependency Injection Strategies in Swift 简书地址:Swift中依赖注入的解耦策略 今天我们将深入研究Swift中的依赖注入,这是软件开发中最重要的技 ...

  9. swift设置启动图不现实_如何通过装饰房屋来开始在Swift中使用增强现实

    swift设置启动图不现实 by Ranadhir Dey 由Ranadhir Dey 如何通过装饰房屋来开始在Swift中使用增强现实 (How to get started with augmen ...

  10. swift视图容器_如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图...

    swift视图容器 by Lee Dowthwaite 通过李道思韦特 如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图 (How to create a beautif ...

最新文章

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

热门文章

  1. ASP文件上传方式大比拼
  2. 小技巧:方便开机打开多个程序
  3. Windows下JNI的使用教程
  4. ORACLE PATCH 版本的查询 PL/SQL
  5. 完美解决Win8声卡爆音破音、卡顿
  6. 科创板开市暴涨,详解25家企业的“造富”能力
  7. R语言ETL工程系列:检索(select)
  8. 【推荐】在R中无缝集成Github云端代码托管
  9. 高中数学40分怎么办_高中数学新教材都有哪些变化?
  10. visual studio 中将选中代码相同的代码的颜色设置,修改高亮颜色