在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
对于一个数组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}) |
请发表评论