2016-04-11 21 views
1

Ich bin nicht in der Lage die folgende Methode Unterschrift ich während der Arbeit an einer Open-Source-Framework durchlief schließlich zu verstehen:Swift - Strange Methodensignatur Syntax

public func myFunc<A: TypeOfA, B: TypeOfB, C: TypeOfC> 
    (someA: A) 
    -> (someB: B) 
    -> ReturnedType { 

// BODY OF THE FUNC 

} 

Warum gibt es 2 zurück Pfeile ‚->‘? Weiß jemand, wo ich mehr Informationen über diese Syntax bekommen könnte? Habe im Apple Swift doc nichts gefunden.

Ich spreche nicht über die Generika, sondern über die Art, wie die Parameter deklariert werden.

Und ja diese kompiliert fein mit Xcode 7.3

Dank

Antwort

1

Die Funktion nimmt ein Argument, someA: A und kehrt eine weitere Funktion.

Die zurückgegebene Funktion dauert someB: B und gibt ReturnedType zurück.

Dies ist äquivalent zu:

public func myFunc<...>(someA: A) -> ((someB: B) -> ReturnedType) { 
    ... 
} 

oder

typealias SecondFunction = (someB: B) -> ReturnedType 
public func myFunc<...>(someA: A) -> SecondFunction { 
    ... 
}