在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)
是否有这个原因,或者这是“按其原样”的事物之一?
这是遵循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)