2016-06-16 25 views
0

Ich habe versucht, eine statische Methode für eine öffentliche Klasse in Swift 2 zu überlasten.Swift - statische Methoden überladen

Wie ist das möglich? Dies ist ähnlich zu dem, was ich erreichen möchte:

static func test(message: String) -> Void)?) { ### } 

static func test(message: String, number: Int) -> Void)?) { ### } 
+1

Es gibt nur Syntaxfehler in Ihrer Frage. Drop ')?)' Symbole in beiden Methoden und Ihr Code wird funktionieren. –

Antwort

0

Es ist unklar, was Sie versuchen, genau das zu tun, aber es gibt zwei zusätzliche schließenden Klammer. Sieht es so aus, als ob Sie versuchen, ein Abschlussargument zu führen?

Wenn die Absicht, eine String Argument in der ersten Methode zu nehmen ist (und ein String & Int in der zweiten) und Void zurück, dann sollten Sie Ihre Syntax wie folgt aussehen:

static func test(message: String) { /* implementation */ } 

static func test(message: String, number: Int) { /* implementation */ } 

Wenn jedoch die Absicht ist, eine optionale Verschluss zu nehmen, die eine String und gibt nichts zurück nimmt, dann sieht die Syntax wie folgt aus:

static func test(closure: ((String) -> Void)?) { 
    // implementation 
} 

und dann, wenn die CLO sicher, nimmt auch ein Int:

static func test(closure: ((String, Int) -> Void)?) { 
    // implementation 
} 
+0

Danke für die Antwort, ja, ich schrieb meine Sample-Funktion hier in Eile, also habe ich ein paar zusätzliche Klammern hinzugefügt. Was Sie jedoch am Anfang Ihrer Antwort vorgeschlagen haben, ist das, was ich versucht habe zu verwenden, aber es scheint nicht zu funktionieren! – Illinois47

+0

"scheint nicht zu funktionieren" ist keine Beschreibung eines Problems. @ Illinois47 Wenn Sie Hilfe benötigen, müssen Sie viel mehr Details bereitstellen. – nhgrif