学习来自《极客学院:Swift中的函数》

工具:Xcode6.4

直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会

  1. import Foundation
  2.  
  3. /***********嵌套函数*************/
  4. func getMathFunc(#type: String) -> (Int) -> Int{
  5. func squre(num:Int) -> Int{
  6. return num*num
  7. }
  8. func cube(num:Int) -> Int{
  9. return num*num*num
  10. }
  11. switch(type){
  12. case "square":
  13. return squre
  14. default:
  15. return cube
  16. }
  17. }
  18. var mathfunc = getMathFunc(type: "other")
  19. println(mathfunc())
  20. //由于嵌套函数在外函数内部只作用于该函数内部,所以使用闭包简化这个嵌套函数
  21.  
  22. /***********闭包*************/
  23. /*
  24. { (形参列表) -> (返回值) in
  25. 可执行语句
  26. }
  27. */
  28. func getMathFunc_1(#type: String) -> (Int) -> Int{
  29. // func squre(num:Int) -> Int{
  30. // return num*num
  31. // }
  32. // func cube(num:Int) -> Int{
  33. // return num*num*num
  34. // }
  35. switch(type){
  36. case "square":
  37. return {
  38. (num:Int) -> Int in
  39. return num * num
  40. }
  41. default:
  42. return {
  43. (num:Int) ->Int in
  44. return num * num * num
  45. }
  46. }
  47. }
  48. var mathfunc_1 = getMathFunc_1(type: "other")
  49. println(mathfunc_1())
  50. //利用上下文推断类型
  51. var squre1: (Int) -> Int = {(num) in return num*num }
  52. println(squre1())
  53. var squre2: (Int) -> Int = {num in return num*num }
  54. println(squre2())
  55. //省略形参名,通过$0,$1...来引用第一个、第二个参数
  56. var squre3: (Int) -> Int = {$ * $}
  57. println(squre3())
  58.  
  59. //闭包的经典使用
  60. var result: Int = {
  61. var result =
  62. for i in ...${
  63. result *= $
  64. }
  65. return result
  66. }(,)
  67. println(result)
  68.  
  69. //尾随闭包
  70. func someFunction(num:Int,fn: (Int)->()){
  71. //执行代码
  72. }//第一个参数为整型,第二个参数为闭包
  73. //调用这个函数: someFunction(20,{})
  74. //使用尾随闭包调用函数的格式:someFunction(20){}
  75.  
  76. //捕获上下文中的变量或者常量
  77. func makeArr(ele:String) ->() ->[String]{
  78. //创建一个不包含任何元素的数组
  79. var arr: [String] = []
  80. func addElement() -> [String]{
  81. //向arr数组中添加一个元素
  82. arr.append(ele)
  83. return arr
  84. }
  85. return addElement
  86. }

Swift 中的函数(下)的更多相关文章

  1. Swift 中的函数

    学习来自<极客学院:Swift中的函数> 工具:Xcode6.4 直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会 练习一: import Foundation //函数 ...

  2. Swift 中调试状态下打印日志

    首先我们应该知道Swift中真个程序的入口就是在AppDelegate.swift中.所以在打印日志在 AppDelegate.swift中是这样的 import UIKit @UIApplicati ...

  3. Swift 中的利刃,函数和闭包

    input[type="date"].form-control,.input-group-sm>input[type="date"].input-grou ...

  4. Swift 中的高阶函数和函数嵌套

    高阶函数 在Swift中,函数可做为“一等公民”的存在,也就意味着,我们可以和使用 int 以及 String 一样,将函数当做 参数.值.类型来使用. 其中,将函数当作一个参数和值来使用可见下: t ...

  5. swift 2.2 语法 (下)

    前言: 1.此文中的语法会根据Swift的升级变动而更新. 2.如果需要请移步 -> swift2.2 语法(上).swift 2.2语法(中) 类的析构函数 swift会自动释放不需要的实例来 ...

  6. Swift学习之函数和简单地控件的创建

     今天还是重复昨天做的事情--敲代码,但唯一的不同就是所学的知识不同了,我们又进一步往深得层次学习了,感觉越来越有意思了,虽然临近结束了看着大家积极性越来越低了,但是我知道我不能这样,我要比别人付出的 ...

  7. Swift 学习- 07 -- 函数

    // 函数 // 函数是一段完成特定任务的独立代码片段, 你可以通过给函数命名来标识某个函数的功能, 这个名字可以被用来在需要的时候'调用'这个函数来完成它的任务 // swift 统一的函数语法非常 ...

  8. Swift 学习笔记 (函数)

    函数 函数是一个独立的代码块,用来执行特定的任务.Swift中的函数与Object-C中的函数一样,但是声明与书写的方式不太一样,现在我们就通过几个例子介绍一下Swift中的函数.简单的来说,他与JS ...

  9. Swift新手教程系列5-函数+selector在swift中的使用方法

    原创blog.转载请注明出处 近期在用swift写代码,尽管遇到一些问题,可是代码量确实减了不少. swfit新手教程系列会随着我使用swfit中的积累,不断地去修正更新 之前的教程 swift单例模 ...

随机推荐

  1. MySQL工具汇总

    本博客已经迁移至:http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文请点击:http://cenalulu.github.io/mysql/mysql-tools-lis ...

  2. PowerMock 简介--转载

    原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-powermock/ EasyMock 以及 Mockito 都因为可以极大地简化单元测试的书 ...

  3. Love

    愿这段代码陪我走过此生,献给我最爱的榨菜. /** *@Description:<p>我爱榨菜</p> *@author 王旭 *@time 2016年4月25日 下午7:58 ...

  4. jquery easyui dialog Bug解决方案

    最近一直都在用easyui前端框架来开发设计UI,但在使用Dialog时,发现如果页面内容比较多,就会出现问题,首先看一下我的原代码: <input type="button" ...

  5. 转载:第二弹!全球首个微信小程序(应用号)开发教程!通宵吐血赶稿!每日更新!

    今天一波三折,承受了超出预料的压力和煎熬,最后还是决定继续放出我的更新教程.我想我一没有泄露公司的代码,二没有提供泄露开发工具下载,只是从程序猿角度写了篇开发日志.我已经做好了最坏的准备,就算放弃这份 ...

  6. EF错误记录

    纯属个人记录错误使用: 1.EntityType“area”未定义键.请为该 EntityType 定义键. 产生原因: 1.命名空间引用错误,可能命名重复导致引用错误 2.实体类无法识别主键或者未设 ...

  7. 11.22 点餐APP第一阶段总结

    第一个冲刺结束了,任务也算是完成了. 团队合作不像单独做那样想怎么来就怎么来,各个人都不同的意见,最后方案的需要每个人一致同意通过才能执行. 不过团队合作分配到每个人的任务也相对轻一点,而且遇到问题解 ...

  8. 2015年百度之星初赛(1) --- D KPI

    KPI Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  9. WinFrom子窗体向父窗体传值

    父窗框mainForm;子窗体childForm,利用事件进行传值 在子窗体中的操作: public event EventHandler accept;public string value; pr ...

  10. javascript:Bing Maps AJAX Control, Version 7.0

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...