这一章来看看swift的函数声明与调用
函数声明 func 函数名(参数)->返回类型{函数代码块}
我们来声明一下
//无参无反 func test(){ print("asdfa"); } //有参有反 func test1(a:Int)->Int{ return ++a } //有参无反 func test2(a:Int){ print(a) } func test(a:Int)->Void{ print(a); } //无参有反 func test()->Int{ return 1 }
函数基本的四个类型就是这样,很简单
来看看swift特殊的地方
外部名
当swift函数有多个参数时写法与其他语言有所区别
func test5(a: Int ,b:Int) ->Int { return a+b } test5(5, b: 3)
注意下 这里调用时有什么不同? 多了个b: 对,这就是外部名这个外部名是可变的,针对的是调用者而言 你可以把b改成s或任意变量名(符合变量命名规范)
func test5(a: Int ,s b:Int) ->Int { return a+b } test5(5, s: 3)
这样就把外部名改成了s 第一个变量是不用外部名的,当然你也可以给他加一个 就像刚才给b的变量名改成s一样
默认值
这个就是字面上意思 参数有一个默认值,声明函数的时候设置
func test6(a: Int = 5,b:Int = 5) ->Int { return a+b }
test6() test6(5) test6(b: 3) test6(5, b: 3)
如果这个函数参数声明了默认值 则会有这么多种调用方式(没给的参数则会用默认的)
这里注意几点
1.有默认值的情况,参数统统都放在后面
2.调用时参数顺序,尽量与声明函数时的顺序一样
修饰
默认情况下形参参数类型是let常量,如果需要修改则自行加上var
如果需要引用传值则加inout
fun test7(a:Int){ //a=3(报错) print(a) } fun test8(var a:Int){ a=3 print(a) } fun test8(inout a:Int){ a=3 print(a) } var a = 5 test8(a) a
可变参数长度
func add(initNum: Int,numbers:Int...)->Int { var totals = initNum for num in numbers { totals += num } return totals } add(5,numbers: 6) add(6,numbers:2,4,3)
写法如上第二个参数,不管多少个int类型参数都会集合起来作为numbers数组