1 函数的介绍
- 函数相当于OC中的方法
- 函数的格式如下: func 函数名(参数列表) -> 返回值类型 { 代码块 return 返回值 }
- func是关键字,多个参数列表之间可以用逗号(,)分隔,也可以没有参数
- 使用箭头“->”指向返回值类型
- 如果函数没有返回值,返回值为Void.并且“-> 返回值类型”部分可以省略
2 常见的函数类型
//1 没有参数,没有返回值(方式一定义) func map() -> Void { print("这里是地图") } //调用函数 map() //1 没有参数,没有返回值(方式2定义) //func map(){ // print("这里是地图") //} ////调用函数 //map() //2 有参数,没有函数返回值 func mapTo(mapwhere : String) { print("我在" + mapwhere) } mapTo("北京") //3 无参数,有返回值 func callmap() -> String { return "调用地图" } callmap() //4 有参数,有返回值 func SUM(num1: Int,num2 : Int) -> Int { return num1 + num2 } SUM(10,num2: 10)
3 函数的使用注意
- 注意一: 外部参数和内部参数
- 在函数内部可以看到的参数,就是内部参数
- 在函数外面可以看到的参数,就是外部参数
- 默认情况下,从第二个参数开始,参数名称既是内部参数也是外部参数
- 如果第一个参数也想要有外部参数,可以设置标签:在变量名前加标签即可
- 如果不想要外部参数,可以在参数名称前加_
// 4 有参数,有返回值,参数带标签 func sub(a num1: Int,b num2 : Int) -> Int { return num1 - num2 } sub(a: 50,b: 50) // 方法的重载:方法名称相同,但是参数不同,可以称之为方法的重载 func sub(a num1 : Double,b num2: Double) -> Double { return num2 - num1 } sub(a: 20.1,b: 40.16)
func love(type :String = "OSC") -> String { return "我喜欢\(type)。" } let like = love("CSDN") let like2 = love()
func sum(numbers:Double...) -> Double { var total: Double = 0 for number in numbers { total += number } return total } sum(100.0,20,30) sum(30,80)
- 注意四: 引用类型(指针的传递)
- 默认情况下,函数的参数是值传递.如果想改变外面的变量,则需要传递变量的地址
- 必须是变量,因为需要在内部改变其值
- Swift提供的inout关键字就可以实现
- 对比下列两个函数
// 函数一:值传递 func swap(var a : Int,var b : Int) { let temp = a; a = b; b = temp print("a:\(a),b:\(b)") } var a = 10 var b = 20 swap(a,b: b) print("a:\(a),b:\(b)") // 函数二:指针的传递 func swap1(inout a : Int,inout b : Int) { let temp = a a = b b = temp print("a:\(a),b:\(b)") } swap1(&a,b: &b) print("a:\(a),b:\(b)")
// 函数的嵌套 let value = 55 func test() { func demo() { print("demo \(value)") } print("test") demo() } demo() // 错误 test()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。