Ein möglicher Grund ist, dass es sich tatsächlich um eine Methode handelt. Methoden sind sehr hinterhältig, sie sehen genauso aus wie normale Funktionen, aber sie verhalten sich nicht gleich. Schauen wir uns das an:
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)
Hier ist der lustige Teil: Deklarieren Sie eine Funktion innerhalb einer Klasse und es ist keine Funktion mehr ... es ist eine Methode
class SomeClass {
func someClassFunctionWithParamOne(paramOne: Int, paramTwo: Int) {
println("someClassFunction: \(paramOne) : \(paramTwo)")
}
}
var someInstance = SomeClass()
someInstance.someClassFunctionWithParamOne(1, paramTwo: 4)
Dies ist Teil des Verhaltensentwurfs für Methoden
Apple Docs:
Insbesondere gibt Swift dem ersten Parameternamen in einer Methode standardmäßig einen lokalen Parameternamen und dem zweiten und den nachfolgenden Parameternamen standardmäßig sowohl lokale als auch externe Parameternamen. Diese Konvention entspricht der typischen Namens- und Aufrufkonvention, mit der Sie beim Schreiben von Objective-C-Methoden vertraut sind, und ermöglicht ausdrucksstarke Methodenaufrufe, ohne dass Sie Ihre Parameternamen qualifizieren müssen.
Beachten Sie die automatische Vervollständigung: