• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

swift的高阶函数的使用代码

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 1 //: Playground - noun: a place where people can play
 2 
 3 import UIKit
 4 
 5 var str = "Hello, playground"
 6 
 7 /// 使用map函数,进行数组内部数据的转换,map中接受一个转换函数
 8 var array =  [1,2,3,4,5]
 9 var newArray = array.map({$0 * 2})
10 print(newArray)
11 
12 
13  /// 使用reduce 函数 求和
14 var sum = array.reduce(0, combine: +)
15 print(sum)
16 
17 
18 /// 使用 filter来验证tweet中是否包含选定的若干关键字中的一个
19 let words = ["Swift","iOS","cocoa","OSX","tvOS"]
20 let tweet = "This is an example tweet larking about Swift"
21 let valid = !words.filter({tweet.containsString($0)}).isEmpty
22 print(valid)
23 
24 let valid1 = words.contains(tweet.containsString)
25 print(valid1)
26 
27 let valid2 = tweet.characters.split(" ").lazy.map(String.init).contains(Set(words).contains)
28 print(valid2)
29 
30 
31  /// 使用split map 分隔内容
32 let text = "窗前明月光 疑是地上霜 举头望明月 低头思故乡"
33 let lines = text.characters.split(" ").map(String.init)
34 print(lines[0])
35 print(lines[1])
36 print(lines[2])
37 print(lines[3])
38 
39 
40 /// 使用forEach 高阶函数便利
41 let name = "urai"
42 (1...4).forEach({print("Happy Birthday " + (($0 == 3) ? "dear \(name)":"to You"))})
43 (1...4).forEach{print("Happy Birthday " + (($0 == 3) ? "dear \(name)":"to You"))}
44 
45 
46 // MARK: - 查找数组中符合条件的数据
47 extension SequenceType {
48     
49     typealias Element = Self.Generator.Element
50     
51     func partitionBy(fu: (Element) -> Bool) -> ([Element],[Element]) {
52         
53         var first = [Element]()
54         var second = [Element]()
55         
56         for el in self {
57             
58             if fu(el) {
59                 
60                 first.append(el)
61             }
62             else {
63                 
64                 second.append(el)
65             }
66         }
67         return (first,second)
68     }
69 }
70 
71 let part = [82, 58, 76, 49, 88, 90].partitionBy{$0 < 60}
72 print(part)
73 
74 // MARK: - 一种更简介的查找方式
75 extension SequenceType {
76     
77     func anotherpartitionBy(fu: (Self.Generator.Element) -> Bool) -> ([Self.Generator.Element],[Self.Generator.Element]) {
78         
79         return (self.filter(fu),self.filter({!fu($0)}))
80     }
81 }
82 
83 let part1 = [82, 58, 76, 49, 88, 90].anotherpartitionBy{$0 < 60}
84 print(part1)
85 
86 /// 使用的是分区元组,但效率不如上边的高
87 var part2 = [82, 58, 76, 49, 88, 90].reduce( ([],[]), combine: {
88     (a:([Int],[Int]),n:Int) -> ([Int],[Int]) in
89     (n<60) ? (a.0+[n],a.1) : (a.0,a.1+[n])
90 })
91 print(part2)

代码


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift:网络库Alamofire发布时间:2022-07-13
下一篇:
[Swift]LeetCode1038.从二叉搜索树到更大和树|BinarySearchTreetoGreaterSumTree ...发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap