博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift 中的函数
阅读量:4323 次
发布时间:2019-06-06

本文共 3112 字,大约阅读时间需要 10 分钟。

学习来自《极客学院: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 "+personName12 }13 println(sayHello("HeYang"))14 15 //2.外部参数名 局部参数名:形参类型16 func area(宽 width: Double,高  height: Double) -> Double17 {18     return width * height19 }20 print("面积是:")21 println(area(宽: 3.4, 高: 4.3))22 //但是这样比较麻烦,所以需要用#号23 func area_1(#width: Double,#height: Double) -> Double24 {25     return width * height26 }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 = 033     for num in numbers{34         total += num35     }36     return total37 }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而是_ name48 49 //如果有可变参数,也有默认参数,那么可变参数放在最后面,默认参数只能出现在次后面50 51 //5.常量形参 和 变量形参52 func factorial(var number:Int) -> Int{53     var result: Int = 154     while number > 1{55         result = result*number56         number--57     }58     return result59     //变量的形参作用域在函数内部,所以形参怎么变化都是不会影响到外面的变量60 }61 print("形参")62 println(factorial(4))63 64 //6.In-Out形参65 func swap(inout a:Int,inout b:Int){66     var temp = a67     a = b68     b = temp69 }70 var a = 171 var b = 272 swap(&a, &b)73 println("交换之后,a:\(a) b:\(b)")74 /*注意75 1.只能传入变量作为实参76 2.输入输出参数不能带有默认值77 3.如果你用关键字,inout标记了一个参数,这个参数不能用var或者let去标记78 */

运行输出结果是:

练习二:

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

运行的结果:

 

转载于:https://www.cnblogs.com/goodboy-heyang/p/4647979.html

你可能感兴趣的文章
分享PHP小马一枚,完美绕过安全狗检测。
查看>>
初涉树分块
查看>>
iframs刷新的两种方法
查看>>
RN全局的变量,方法,全局类,全局类方法
查看>>
安装scikit-learn
查看>>
FOJ Problem 2261 浪里个浪
查看>>
Shel脚本学习—反引号、单引号、双引号区别与联系
查看>>
Spring Boot 2 实践记录之 组合注解原理
查看>>
互联网金融爬虫怎么写-第一课 p2p网贷爬虫(XPath入门)
查看>>
语义化的理解?
查看>>
多线程学习(十)
查看>>
gnu
查看>>
SQL注入之绕过WAF和Filter
查看>>
jquery validate使用方法
查看>>
DataNode 工作机制
查看>>
windows系统下安装MySQL
查看>>
错误提示总结
查看>>
实验二+070+胡阳洋
查看>>
Linux IPC实践(3) --具名FIFO
查看>>
Qt之模拟时钟
查看>>