一尘不染

在Swift中使用函数参数名称

swift

在Swift中,调用第一个参数时会使用参数名称。为什么不使用名字?

使用Swift手册的变体;

var count2: Int = 0
func incrementBy2(amount: Int, numberOfTimes times: Int) {
count2 += amount * times}

这会起作用;

incrementBy2(2, numberOfTimes: 7)

但这给了我“调用中的外部参数标签’amount’”

incrementBy2(amount: 2, numberOfTimes: 7)

是否有这个原因,或者这是“按其原样”的事物之一?


阅读 215

收藏
2020-07-07

共1个答案

一尘不染

这是遵循Objective-C习惯的惯例,第一个参数的名称与方法名称结合在一起。这是一个例子:

- (void)incrementByAmount:(NSInteger)amount
            numberOfTimes:(NSInteger)times
{
    // stuff
}

您可以像这样调用方法:

[self incrementByAmount:2 numberOfTimes:7];

通过将参数的名称合并到方法的名称中,可以使阅读更加自然。在Swift中,您可以通过以下方法实现相同目的:

func incrementByAmount(amount: Int, numberOfTimes: Int) {
    // same stuff in Swift
}

并调用如下方法:

incrementByAmount(2, numberOfTimes: 7)

如果您不想使用此约定,Swift可以使您更加明确,并定义单独的内部和外部参数名称,如下所示:

func incrementByAmount(incrementBy amount: Int, numberOfTimes: Int) {
    // same stuff in Swift
    // access `amount` at this scope.
}

您可以这样调用方法:

incrementByAmount(incrementBy: 2, numberOfTimes: 7)
2020-07-07