在Swift中,在调用方法时使用参数名称,第一个参数除外.为什么不使用名字?
使用Swift手册的变体;
var count2: Int = 0
func incrementBy2(amount: Int, numberOfTimes times: Int) {
count2 += amount * times}
Run Code Online (Sandbox Code Playgroud)
这将有效;
incrementBy2(2, numberOfTimes: 7)
Run Code Online (Sandbox Code Playgroud)
然而,这给了我"呼叫中的外来参数标签'金额'"
incrementBy2(amount: 2, numberOfTimes: 7)
Run Code Online (Sandbox Code Playgroud)
这有什么理由,还是其中一种"只是它的方式"?
Mic*_*lum 17
这是遵循我们从Objective-C习惯的约定,其中第一个参数的名称与方法名称相结合.这是一个例子:
- (void)incrementByAmount:(NSInteger)amount
numberOfTimes:(NSInteger)times
{
// stuff
}
Run Code Online (Sandbox Code Playgroud)
您可以调用方法,如:
[self incrementByAmount:2 numberOfTimes:7];
Run Code Online (Sandbox Code Playgroud)
通过将参数的名称合并到方法的名称中,读取感觉更自然.在Swift中,您可以通过以下方式实现相同的目标:
func incrementByAmount(amount: Int, numberOfTimes: Int) {
// same stuff in Swift
}
Run Code Online (Sandbox Code Playgroud)
并调用方法如:
incrementByAmount(2, numberOfTimes: 7)
Run Code Online (Sandbox Code Playgroud)
如果您不想使用此约定,Swift使您能够更明确地定义单独的内部和外部参数名称,如下所示:
func incrementByAmount(incrementBy amount: Int, numberOfTimes: Int) {
// same stuff in Swift
// access `amount` at this scope.
}
Run Code Online (Sandbox Code Playgroud)
您可以像这样调用方法:
incrementByAmount(incrementBy: 2, numberOfTimes: 7)
Run Code Online (Sandbox Code Playgroud)
在您的示例中,您没有为第一个参数设置名称.您只有变量名称.
请试试以下:
func incrementBy2(amount am: Int, numberOfTimes times: Int) {
}
Run Code Online (Sandbox Code Playgroud)
所以你可以称之为
incrementBy2(amount: 0, numberOfTimes: 0)
并且am将在函数内部的变量的名称.amount将是一个外部名称.
如果你想要相同的外部名称和变量,你可以试试这个:
func incrementBy2(amount amount: Int, numberOfTimes times: Int) {
}
Run Code Online (Sandbox Code Playgroud)
还是打个电话
incrementBy2(amount: 0, numberOfTimes: 0)
更多信息 函数参数名称和指定外部参数名称 Apple的Swift编程语言章节
| 归档时间: |
|
| 查看次数: |
4846 次 |
| 最近记录: |