Swift 1.1语言函数参数的特殊情况本地参数名外部参数名
7.4函数参数的特殊情况
声明定义有参函数时,为函数的每一个参数都定义了参数名称。根据参数名定义的形式不同,函数参数包括本地参数和外部参数名两种本文选自swift入门很简单。
7.4.1本地参数名
本地参数名就是定义函数名时,在参数列表中所写的参数名,它只可以在函数主体内使用。如以下的一个代码片段,它定义了一个函数名为fun的函数,在此函数的参数列表中定义的就是本地参数名文选自swift入门很简单。
-
func fun(start:Int,end:Int,str:String){
-
……
-
}
@H_502_49@
-
func join(s1: String,s2: String,s3: String) {
-
println("\(s1)\(s3)\(s2)")
-
}
-
join("hello","world",",")
@H_502_49@
-
func函数名(外部参数名本地参数名:数据类型){
-
-
函数名(外部参数名:参数值)
@H_502_49@
-
func join(string s1: String,tostring s2: String,joiner s3: String) {
-
println("\(s1)\(s3)\(s2)")
-
}
-
join(string: "Hello",tostring: "Swift",joiner: ",")
-
其中,string、tostring、joiner都是外部参数名。运行结果如下:
-
Hello,Swift
-
Program ended with exit code: 0
@H_502_49@
-
import Foundation
-
func join(#string:String,#tostring: String,#withJoiner:String) {
-
println("\(string)\(withJoiner)\(tostring)")
-
}
-
join(string: "hello",tostring: "world",withJoiner: ",sans-serif; font-size:14px"> 虽然定义的时候可以使用“#”简写,但是调用的时候必须写完整的外部参数名。
7.4.3设定参数默认值
在定义函数的时候,可以为参数设定默认值。这样,在调用的时候,就不用再传递该参数的值。
【示例7-9】以下的代码就为start和end参数分别定义了默认值0和5,其功能是输出0到5的数值。代码如下:
-
import Foundation
-
//声明定义函数
-
func fun(start:Int=0,end:Int=5){
-
var i=start
-
for i;i<=end;++i{
-
println(i)
-
}
-
}
-
fun()//调用
@H_502_49@
-
0
-
1
-
2
-
3
-
4
-
5
-
Program ended with exit code: 0
@H_502_49@
-
import Foundation
-
func fun(start:Int=0,end:Int=3){
-
var i=start
-
for i;i<=end;++i{
-
println(i)
-
}
-
}
-
println("使用默认值范围")
-
fun()
-
println("使用改变后的范围")
-
fun(start:3,end:8)//改变了默认值
@H_502_49@
代码中,函数fun()调用的时候没有传递任何参数值。这是由于定义函数fun()时参数start和end都有默认值,所以调用的时候就可以不传递参数。运行结果如下所示文选自swift入门很简单:
注意:在使用默认值是需要注意以下几点:
(1)定义时,将使用默认值的参数放在函数的参数列表的末尾。这确保了调用函数时候,不会因为省略参数值而影响不具备默认值的参数的顺序。
(2)调用时,如果参数的默认值已经被设置,可以省略该参数的传值。
(3)如果开发者设定了默认值,但在调用时想要改变默认值,也可以继续赋值。
【示例7-10】以下代码输出3到8之间的数值,包括3和8。代码如下:
-
【示例7-7】以下示例为具有字符串连接功能的函数定义外部参数。代码如下:
这里需要注意以下三点:
(1)调用时使用外部参数:如果为参数提供了一个外部参数名后,需要在调用该函数的同时使用外部参数名。否则,程序就会提示错误。例如下面的具有字符串连接功能的函数调用代码文选自swift入门很简单:
- join("Hello","Swift",sans-serif; font-size:14px"> 由于在上方的代码中没有使用外部参数名string、tostring、joiner,所以出现了以下的错误提示:
本地参数名 【示例7-8】以下程序实现字符串连接功能,外部参数名的定义使用了“#”号。代码如下文选自swift入门很简单:
-
在以上的代码中,定义的参数名start、end、str都是本地参数名。它只可以在函数本身的代码中使用,在调用时就不可以使用了。
7.4.2外部参数名
在函数中,如果每一个参数的目的不是很明确或者是含糊不清的,那么对于其他开发者来说,是很难理解参数的目的。例如下面的代码,它是一个具有字符串连接功能的函数,代码如下文选自swift入门很简单:
对于这么一个函数来说,参数s1、s2、s3只知道是三个字符串,但是涉及到每一个参数的具体目的,就不是很容易理解了。为了解决这一难题,Swift提供了外部参数名称。外部参数和本地参数的定义是一样的。但是如果开发者需要更好的表达参数的功能,需要在定义时使用外部参数名。外部参数名需要写在本地参数名之前,并使用空格将其分开。它的一般形式如下: