MyException - 我的异常网
当前位置:我的异常网» Swift » 惯用的 74个内置函数

惯用的 74个内置函数

www.MyException.Cn  网友分享于:2013-10-22  浏览:0次
常用的 74个内置函数
  1 // MARK: 1.断言 assert,参数如果为ture则继续,否则抛出异常
  2 let number = 3
  3 
  4 //第一个参数为判断条件,第二各参数为条件不满足时的打印信息
  5 assert(number >= 3,"number 不大于 3")
  6 
  7 //如果断言被处罚(number <= 3),将会强制结束程序,并打印相关信息
  8 // assertion failed: number 不大于 3
  9 // 断言可以引发程序终止,主要用于调试阶段。比如下面的情况:
 10 /*
 11 * 自定义整形数组索引越界问题
 12 * 向函数传值,无效值引发函数不能完成相应任务
 13 * Optional类型数据为nil值,引发的程序crash
 14 */
 15 
 16 // MARK: 2.获取序列的元素个数 characters.count (countElements)
 17 let str = "foo"
 18 
 19 //打印元素个数
 20 print("count == \(str.characters.count)")
 21 //打印结果
 22 // count == 3
 23 
 24 // MARK: 3.返回最大最小值min(),max()
 25 max(10, 20)
 26 min(1, 3, 5, 9, 8)
 27 
 28 // MARK: 4.排序 sorted (sort)
 29 let ary  = ["B", "A", "C"]
 30 
 31 //默认排序(升序)
 32 let ary1 = ary.sorted()
 33 print(ary1)
 34 //打印结果
 35 // ["A", "B", "C"]
 36 
 37 //自定义排序(降序)
 38 let ary2 = ary.sorted {
 39 //    $1 < $0
 40     $0.1 < $0.0
 41 }
 42 print(ary2)
 43 //打印结果
 44 // ["C", "B", "A"]
 45 // 可以看出,可以用0、1、2来表示调用闭包中参数,0指代第一个参数,1指代第二个参数,2指代第三个参数,以此类推n+1指代第n个参数,后的数字代表参数的位置,一一对应。
 46 
 47 // MARK: 5.map函数
 48 let arr = [2,1,3]
 49 
 50 //数组元素进行2倍放大
 51 let doubleArr = arr.map {$0 * 2}
 52 print(doubleArr)
 53 //打印结果
 54 //[4, 2, 6]
 55 
 56 //数组Int转String
 57 let moneyArr = arr.map { "¥\($0 * 2)"}
 58 print(moneyArr)
 59 //打印结果
 60 //["¥4", "¥2", "¥6"]
 61 
 62 //数组转成元组
 63 let groupArr = arr.map {($0, "\($0)")}
 64 print(groupArr)
 65 //打印结果
 66 //[(2, "2"), (1, "1"), (3, "3")]
 67 
 68 // map(sequence, transformClosure): 如果transformClosure适用于所给序列中所有的元素,则返回一个新序列。
 69 
 70 // MARK: 6.flapMap函数
 71 let flapMap_ary  = [["B", "A", "C"],["1","5"]]
 72 
 73 //flapMap函数会降低维度
 74 //flapMap_ary.flatMap(<#T##transform: (Array<String>) throws -> ElementOfResult?##(Array<String>) throws -> ElementOfResult?#>)
 75 let flapMapAry = flapMap_ary.flatMap{$0}
 76 print(flapMapAry)
 77 //打印结果
 78 //["B", "A", "C", "1", "5"] // 二维数组变成了一维
 79 
 80 // MARK: 7.筛选函数filter
 81 let numbers = [1, 2, 3, 4, 5, 6]
 82 
 83 //获取偶数值
 84 let evens = numbers.filter{$0 % 2 == 0}
 85 print(evens)
 86 //打印结果
 87 //[2, 4, 6]
 88 
 89 // MARK: 8.reduce函数
 90 let arr_reduce = [1, 2, 4,]
 91 
 92 //对数组各元素求和
 93 let sum = arr_reduce.reduce(0) {$0 + $1}
 94 print(sum)
 95 //打印结果
 96 //7
 97 //arr_reduce.reduce(<#T##initialResult: Result##Result#>, <#T##nextPartialResult: (Result, Int) throws -> Result##(Result, Int) throws -> Result#>)
 98 //对数组各元素求积
 99 let product =  arr_reduce.reduce(1) {$0 * $1}
100 print(product)
101 //打印结果
102 //8
103 
104 // MARK: 9.dump(object): 一个对象的内容转储到标准输出
105 dump(arr_reduce)
106 
107 /*
108  
109  ▿ 3 elements
110  - 1
111  - 2
112  - 4
113  
114  */
115 // MARK: 10.indices(sequence): 在指定的序列中返回元素的索引(零索引)
116 for i in arr_reduce.indices {
117     print(i)
118     // 0 1 2
119 }
120 
121 // MARK: 11.一些在编程中经常会用到的函数
122 abs(-1) == 1 //获取绝对值
123 ["1","6","4"].contains("2") == false  //判断序列是否包含元素
124  ["a","b"].dropLast() == ["a"]  //剔除最后一个元素
125 ["a","b"].dropFirst() == ["b"] //剔除第一个元素
126 ["a","b"].elementsEqual(["b","a"]) == false  //判断序列是否相同
127  ["a","b"].indices == 0..<2  //获取index(indices是index的复数)
128 ["A", "B", "C"].joined(separator: ":") == "A:B:C" //将序列以分隔符串联起来成为字符串
129 Array([2, 7, 0].reversed()) == [0, 7, 2]   //逆序,注意返回的并非原类型序列
130 
131 // MARK: 常用的 74 个函数
132 /*
133  
134  abs(...)
135  advance(...)
136  alignof(...)
137  alignofValue(...)
138  assert(...)
139  bridgeFromObjectiveC(...)
140  bridgeFromObjectiveCUnconditional(...)
141  bridgeToObjectiveC(...)
142  bridgeToObjectiveCUnconditional(...)
143  c_malloc_size(...)
144  c_memcpy(...)
145  c_putchar(...)
146  contains(...)
147  count(...)
148  countElements(...)
149  countLeadingZeros(...)
150  debugPrint(...)
151  debugPrintln(...)
152  distance(...)
153  dropFirst(...)
154  dropLast(...)
155  dump(...)
156  encodeBitsAsWords(...)
157  enumerate(...)
158  equal(...)
159  filter(...)
160  find(...)
161  getBridgedObjectiveCType(...)
162  getVaList(...)
163  indices(...)
164  insertionSort(...)
165  isBridgedToObjectiveC(...)
166  isBridgedVerbatimToObjectiveC(...)
167  isUniquelyReferenced(...)
168  join(...)
169  lexicographicalCompare(...)
170  map(...)
171  max(...)
172  maxElement(...)
173  min(...)
174  minElement(...)
175  numericCast(...)
176  partition(...)
177  posix_read(...)
178  posix_write(...)
179  print(...)
180  println(...)
181  quickSort(...)
182  reduce(...)
183  reflect(...)
184  reinterpretCast(...)
185  reverse(...)
186  roundUpToAlignment(...)
187  sizeof(...)
188  sizeofValue(...)
189  sort(...)
190  split(...)
191  startsWith(...)
192  strideof(...)
193  strideofValue(...)
194  swap(...)
195  swift_MagicMirrorData_summaryImpl(...)
196  swift_bufferAllocate(...)
197  swift_keepAlive(...)
198  toString(...)
199  transcode(...)
200  underestimateCount(...)
201  unsafeReflect(...)
202  withExtendedLifetime(...)
203  withObjectAtPlusZero(...)
204  withUnsafePointer(...)
205  withUnsafePointerToObject(...)
206  withUnsafePointers(...) 
207  withVaList(...)
208  
209  */

 

文章评论

2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
程序员和编码员之间的区别
程序员和编码员之间的区别
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
那些争议最大的编程观点
那些争议最大的编程观点
Java程序员必看电影
Java程序员必看电影
旅行,写作,编程
旅行,写作,编程
我的丈夫是个程序员
我的丈夫是个程序员
总结2014中国互联网十大段子
总结2014中国互联网十大段子
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
鲜为人知的编程真相
鲜为人知的编程真相
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序员应该关注的一些事儿
程序员应该关注的一些事儿
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
如何成为一名黑客
如何成为一名黑客
代码女神横空出世
代码女神横空出世
一个程序员的时间管理
一个程序员的时间管理
老程序员的下场
老程序员的下场
 程序员的样子
程序员的样子
程序员都该阅读的书
程序员都该阅读的书
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
漫画:程序员的工作
漫画:程序员的工作
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
每天工作4小时的程序员
每天工作4小时的程序员
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
10个调试和排错的小建议
10个调试和排错的小建议
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
程序员必看的十大电影
程序员必看的十大电影
中美印日四国程序员比较
中美印日四国程序员比较
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
编程语言是女人
编程语言是女人
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有