Generische Typalias mit variadischen Parametern - ios, swift, generics, swift3, type-alias

Ich verwende eine generische Typalias, um Schließungen zu erstellen. Jedoch bin ich auf eine endliche Anzahl von generischen Parametern beschränkt.

typealias Closure<T> = (T) -> Void

Das funktioniert:

func foo(closure: Closure<(String, Bool)>) {}

Das tut nicht:

func foo(closure: Closure<String, Bool>) {}

Irgendeine Möglichkeit, generische variadische Parameter zu erstellen?

Antworten:

2 für die Antwort № 1

Was du beschreibst ist nicht variadisch (das wäre Closure<String, ...>, und Swift hat auch keines).Was du beschreibst, ist sehr nahe an "gesprenkelten Tupeln" in Swift. (Swift würde es fast sicher "gesprenkelte Typparameter" oder etwas Ähnliches nennen.) Aber nein, Swift hat dieses Feature nicht. Die verwandte Funktion, die Sie benötigen, um dies sogar zu verwenden ("gesprenkelte Tupel"), wurde kürzlich entfernt. Selbst wenn Sie das schaffen könnten, könnten Sie fast nichts damit anfangen, weil es keine Möglichkeit zum Aufruf geben würde die Schließung.


Speisekarte