swift函数参数


参数标签与参数名

参数标签在调用函数的时候使用;参数名在函数内部使用。

每个函数参数都有一个参数标签和参数名;但默认情况下,函数参数用参数名作为参数标签;当然也可以单独指定不同于参数名的参数标签或者使用_忽略参数标签。

// 默认标签
func someFunction(firstParameterName: Int, secondParameterName: Int) {
    // 在函数体内,firstParameterName 和 secondParameterName 代表参数中的第一个和第二个参数值
}
someFunction(firstParameterName: 1, secondParameterName: 2)

// 指定标签
func someFunction(argumentLabel parameterName: Int) {
    // 在函数体内,parameterName 代表参数值
}

// 忽略标签
func someFunction(_ firstParameterName: Int, secondParameterName: Int) {
     // 在函数体内,firstParameterName 和 secondParameterName 代表参数中的第一个和第二个参数值
}
someFunction(1, secondParameterName: 2)

如果参数有标签,调用时就必须使用这个标签来标记参数(有就必须使用)。

理论上,多个参数拥有同样的参数标签是可能的,但为了可读性,应当避免这样做。

默认参数值

不带默认值的参数放在参数列表最前面。保证函数在不同情况下调用时显的更加清晰(对编译器而言)。

可变参数

一个函数最多只能拥有一个可变参数。通过在变量类型名后面加入(…)的方式来定义可变参数。一个可变参数(variadic parameter)可以接受零个或多个值。 可变参数的传入值在函数体中变为此类型的一个数组。

func arithmeticMean(_ numbers: Double...) -> Double {
    var total: Double = 0
    for number in numbers {
        total += number
    }
    return total / Double(numbers.count)
}
arithmeticMean(1, 2, 3, 4, 5)
// 返回 3.0, 是这 5 个数的平均数。
arithmeticMean(3, 8.25, 18.75)
// 返回 10.0, 是这 3 个数的平均数。

输入输出参数

函数参数默认是常量,因此,试图在函数体中更改参数值将会导致编译错误。如果想要修改参数值并且在函数调用结束后,修改结果依然存在,那就应该把参数定义为输入输出参数。

此外,你只能传递变量给输入输出参数。你不能传入常量或者字面量,因为这些量是不能被修改的。

注意,输入输出参数不能有默认值,而且可变参数不能用 inout 标记。

func swapTwoInts(_ a: inout Int, _ b: inout Int) {
    let temporaryA = a
    a = b
    b = temporaryA
}

var someInt = 3
var anotherInt = 107
swapTwoInts(&someInt, &anotherInt)
print("someInt is now \(someInt), and anotherInt is now \(anotherInt)")
// 打印 "someInt is now 107, and anotherInt is now 3

除了函数返回值,输入输出参数是函数对函数体外产生影响的另外一种方式。

知识共享许可协议本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,请务必在遵守许可协议的前提下转载。
发布时间:2018-11-26 15:39:30 阅读:252 标签:技术Swift笔记