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

工具:Xcode6.4

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

练习一:

  1. import Foundation
  2.  
  3. //函数
  4. /*1.定义函数的语法格式
  5. func 函数名(形参列表) -> 返回值类型 {
  6. //可执行语句组成的函数
  7. }
  8. */
  9. //定义和调用函数
  10. func sayHello(personName: String) -> String{
  11. return "Hello "+personName
  12. }
  13. println(sayHello("HeYang"))
  14.  
  15. //2.外部参数名 局部参数名:形参类型
  16. func area(宽 width: Double,高 height: Double) -> Double
  17. {
  18. return width * height
  19. }
  20. print("面积是:")
  21. println(area(宽: 3.4, 高: 4.3))
  22. //但是这样比较麻烦,所以需要用#号
  23. func area_1(#width: Double,#height: Double) -> Double
  24. {
  25. return width * height
  26. }
  27. print("改了之后:")
  28. println(area_1(width: 34.1, height: 9.2))
  29.  
  30. //3可变参数:在参数类型后面添加 ... 表示该参数
  31. func sum(numbers: Int...) -> Int{
  32. var total : Int =
  33. for num in numbers{
  34. total += num
  35. }
  36. return total
  37. }
  38. println("求和是:\(sum(1,2,3,4))")
  39. //要注意的地方:一个函数只能有一个可变参数,而且可变参数只能位于最后
  40.  
  41. //4.默认参数
  42. func sayHi(msg: String,name: String = "HeYang"){
  43. println("\(name),\(msg)")
  44. }
  45. sayHi("你好~")
  46. sayHi("你好~", name: "world")
  47. //不能去掉里面的 name: 也就是带有默认参数的是有外部参数名的,也就是说,默认参数相当于是在外部声明定义的。如果要忽略的话,就在默认参数前面添加下划线:unc sayHi(msg: String,_ name: String = "HeYang")不是_name而是_ name
  48.  
  49. //如果有可变参数,也有默认参数,那么可变参数放在最后面,默认参数只能出现在次后面
  50.  
  51. //5.常量形参 和 变量形参
  52. func factorial(var number:Int) -> Int{
  53. var result: Int =
  54. while number > {
  55. result = result*number
  56. number--
  57. }
  58. return result
  59. //变量的形参作用域在函数内部,所以形参怎么变化都是不会影响到外面的变量
  60. }
  61. print("形参")
  62. println(factorial())
  63.  
  64. //6.In-Out形参
  65. func swap(inout a:Int,inout b:Int){
  66. var temp = a
  67. a = b
  68. b = temp
  69. }
  70. var a =
  71. var b =
  72. swap(&a, &b)
  73. println("交换之后,a:\(a) b:\(b)")
  74. /*注意
  75. 1.只能传入变量作为实参
  76. 2.输入输出参数不能带有默认值
  77. 3.如果你用关键字,inout标记了一个参数,这个参数不能用var或者let去标记
  78. */

运行输出结果是:

练习二:

  1. 1 import Foundation
  2. 2
  3. 3 //函数
  4. 4
  5. 5 //1.多个返回值
  6. 6 func area(width: Double,height: Double) -> (Double,Double)
  7. 7 {
  8. 8 var b = width
  9. 9 var a = width * height
  10. 10 return (a,b)
  11. 11 }
  12. 12 println(area(2,3))
  13. 13 //2、函数类型
  14. 14 func addTwoInts(a: Int, b: Int) -> Int{
  15. 15 return a + b
  16. 16 }
  17. 17 var function: (Int,Int) ->Int = addTwoInts
  18. 18 println(function(3,4))
  19. 19 //3.函数类型作为参数类型
  20. 20 func outfunc(function_1: (Int,Int) ->Int,m:Int,n:Int){
  21. 21 println("result:\(function_1(m, n))")
  22. 22 }
  23. 23 outfunc(addTwoInts ,12,12)
  24. 24 //4函数类型作为返回值类型
  25. 25 func square(a :Int)->Int{
  26. 26 return a*a
  27. 27 }
  28. 28 func cube(a:Int)->Int{
  29. 29 return a*a*a
  30. 30 }
  31. 31 func getMatchFunction(str:String)->(Int)->Int{
  32. 32 switch(str){
  33. 33 case "square":
  34. 34 return square
  35. 35 default:
  36. 36 return cube
  37. 37 }
  38. 38 }
  39. 39 var mathFunc = getMatchFunction("cube")
  40. 40 println(mathFunc(5))
  41. 41 //函数重载
  42. 42 func test(){
  43. 43 println("无参数的test函数")
  44. 44 }
  45. 45 func test(msg:String){
  46. 46 println("重载的test()函数\(msg)")
  47. 47 }
  48. 48 func test(msg:String) -> String{
  49. 49 println("重载的test()函数,外部参数为\(msg)")
  50. 50 return "test"
  51. 51 }
  52. 52 func test(#msg:String) {
  53. 53 println("重载的test()函数,外部参数为\(msg)")
  54. 54 }
  55. 55 test()
  56. 56 var result: Void = test(msg: "何杨")
  57. 57 var result2: String = test("哇哦")
  58. 58 /*局部参数名不能作为区分重载 运行会报错
  59. 59 func test(message:String){
  60. 60 println("")
  61. 61 }
  62. 62 */

运行的结果:

Swift 中的函数的更多相关文章

  1. Swift 中的函数(下)

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

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

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

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

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

  4. 使用swift 中的注意,不断完善中

    1. 应该充分利用swfit的新特性 比如如果按照oc里的习惯,调用一个delegate中都optional函数应该这样写 if delegate != nil && delegate ...

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

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

  6. Swift中的闭包(Closure) 浅析

    转载自:http://www.devtalking.com/articles/closure-expressions-in-swift/ 闭包在Swift中非常有用.通俗的解释就是一个Int类型里存储 ...

  7. Swift 学习- 07 -- 函数

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

  8. Swift中的闭包(Closure)[转]

    闭包在Swift中非常有用.通俗的解释就是一个Int类型里存储着一个整数,一个String类型包含着一串字符,同样,闭包是一个包含着函数的类型.有了闭包,你就可以处理很多在一些古老的语言中不能处理的事 ...

  9. Swift中的指针类型

    Swift编程语言为了能与Objective-C与C语言兼容,而引入了指针类型.尽管官方不建议频繁使用指针类型,但很多时候,使用指针能完成更多.更灵活的任务.比如,我们要实现一个交换两个整数值的函数的 ...

随机推荐

  1. 2次成功投诉EMS和中国移动的经验

    上个月要找房子,搬家很多事情,真实头疼...搬家还把腰闪了....现在还有点痛.然后中间碰到 移动宽带 移机的事情,搞得我非常火.然后想起去年投诉EMS的事情,在事情处理完成后,我果断总结了下来,让大 ...

  2. 【转载】dirs、pushd、popd指令

    转载自:http://hi.baidu.com/linuxtrip/item/47a38c8eec00e98f4414cfb7 一.目录栈指令 目录栈是用户最近访问过的系统目录列表,并以堆栈的形式管理 ...

  3. iOS-高德地图-手动环境搭建

    一. 下载地图包 1. 链接地址: http://lbs.amap.com/api/ios-sdk/download/ 2.需要下载的包,并导入包 (1) MAMapKit-5.framework   ...

  4. Django--models一对多实例

    需求 models一对多表的构建,创建数据,查询数据,数据前端展示等​. 速查 1.创建数据 1 2 all_data = obj.clean()  #{'username': u'user1', ' ...

  5. Spring基础——在 IOC 容器中 Bean 之间的关系

    一.在 Spring IOC 容器中 Bean 之间存在继承和依赖关系. 需要注意的是,这个继承和依赖指的是 bean 的配置之间的关系,而不是指实际意义上类与类之间的继承与依赖,它们不是一个概念. ...

  6. How to Convert Subversion Repo to Git

    用了比较长时间的 SVN,但现在新的项目都采用Git.之前的项目又不得不维护,那么能不能将项目从SVN迁移到Git呢.答案是肯定的,网上的方案是 git-svn,或者更高级的封装 svn2git. 方 ...

  7. 有关CLR的初学小整理2(可能理解不深刻,望大牛指出)

    针对原文有用的段落,写一写自己的理解,注释: 1. 托管exe文件被启动的时候,首先被PE Loader载入.PE Loader载入exe文件之后,会分析PE文件头的data directory ta ...

  8. WinForm输入网址打开源码

    无聊练习一下WinForm,输入网址,点击按钮就在浏览器打开网址. 源代码下载: http://hovertree.com/h/bjaf/cao15h74.htm

  9. 个人信息管理PIM——密码管理工具软件

    密码管理工具 以KeePass为主,结合LastPass在线浏览器网页密码.有钱银可以考虑1Password. KeePass LastPass 1Password 价格费用 免费开源 普通版:免费 ...

  10. 将C1Chart数据导出到Excel

    大多数情况下,当我们说将图表导出到Excel时,意思是将Chart当成图片导出到Excel中.如果是这样,你可以参考帮助文档中保存和导出C1Chart章节. 不过,也有另一种情况,当你想把图表中的数据 ...