一个可能的原因是它实际上是一种方法。方法很偷偷摸摸,它们看起来像常规函数,但是它们的行为方式不同,让我们来看一下:
func funFunction(someArg: Int, someOtherArg: Int) {
println("funFunction: \(someArg) : \(someOtherArg)")
}
funFunction(1, 4)
func externalParamFunction(externalOne internalOne: Int, externalTwo internalTwo: Int) {
println("externalParamFunction: \(internalOne) : \(internalTwo)")
}
externalParamFunction(externalOne: 1, externalTwo: 4)
func externalInternalShared(#paramOne: Int, #paramTwo: Int) {
println("externalInternalShared: \(paramOne) : \(paramTwo)")
}
func externalInternalShared(paramOne paramOne: Int, #paramTwo: Int) {
print("externalInternalShared: \(paramOne) : \(paramTwo)")
}
externalInternalShared(paramOne: 1, paramTwo: 4)
现在是有趣的部分,在类内部声明一个函数,而不再是一个函数……它是一个方法
class SomeClass {
func someClassFunctionWithParamOne(paramOne: Int, paramTwo: Int) {
println("someClassFunction: \(paramOne) : \(paramTwo)")
}
}
var someInstance = SomeClass()
someInstance.someClassFunctionWithParamOne(1, paramTwo: 4)
这是方法行为设计的一部分
苹果文档:
具体来说,Swift默认为方法中的第一个参数名称提供一个本地参数名称,默认情况下为第二个及后续参数名称提供本地和外部参数名称。该约定与您编写Objective-C方法所熟悉的典型命名和调用约定相匹配,并且无需限定参数名称即可进行表达性方法调用。
注意自动完成:
