前面我们介绍了函数的入门语法,今天就仔细学习下函数的形参功能
经典款式
func addDouble(a:Float,b:Float)->Float
{
return a+b
}
这个函数最经典的样式,实现了两个数的相加的功能
外部参数
我们在实际项目开发中类似这样的函数给形参传值的时候因没有介绍性的语句会出现传参错误。于是Swift保留了Object-C的优秀传统,在函数声明中可以指定外部参数名,具体代码如下
外部形参名 局部形参名:形参类型
func addDouble(first a:Float,second b:Float)->Float
{
print(a+b)
return a+b;
}
调用传值的时候是这样的:
addDouble(first: 10, second: 20)
这样带有解释性的外部参数名就更加方便程序员的编码安全和效率。
形参默认值
我们定义函数的时候还可以为函数传入形参默认值,这时候我们调用函数的时候既可以给形参传值也可以省略传值,直接用默认值。代码如下:
[外部形参名] 局部形参名:形参类型=默认值
func addDouble1(a:Float=20.0, b:Float=10.0)->Float
{
return a+b
}
addDouble1()
addDouble1(30,b: 40)
个数可变的形参
SWift函数中参数个数也是可以变化的,我们可以通过在最后一个参数类型后面加入(…)的方式来指示可变参数。例如:
func addNnumber(nNumber:Float...)->Float
{
var results:Float=0
for number in nNumber
{
results += number
}
return results
}
变量形参
Swift函数中默认的形参是常量的,所以我们不能够在函数内部重新改变形参的值,所以为了解决这个问题,我们可以在形参名称前面加上var关键字,这样就可以改变形参的值了。
func addDouble2(var a:Float=20.0,b:Float=10.0)->Float
{
a=a+b
return a+b
}
In-Out形参
函数依然和前面数组和字典一样是值传递,也就是说函数参数传入函数内部只是传入参数的副本,内部改变形参值,将不影响实参值的变化。
为了解决这个问题,我们将引入一个新的语法In-Out参数,这个功能类似于C语言上的引用类型,如果C语言这方面有所遗忘,可以参考我的这篇博客 C、C++动态分配函数暨几种参数传递疑难解析
func swap(inout a:Float,inout b:Float)
{
let temp = a
a=b
b=temp
}
var a:Float = 10.0
var b:Float = 20.0
print("交换前:a的值\(a),b的值\(b)")
swap(&a,b: &b)
print("交换后:a的值\(a),b的值\(b)")
注意要用到&符号