in Haskell Sie dies tun können:Generisches typealias in Swift
type Parser a = String -> [(a, String)]
Ich habe versucht, etwas Ähnliches in Swift zu machen. Bisher habe ich diese Codes ohne Glück geschrieben.
typealias Parser<A> = String -> [(A, String)]
typealias Parser a = String -> [(a, String)]
typealias Parser = String -> [(A, String)]
So ist das einfach unmöglich in swift? Und wenn ja, gibt es noch eine andere Möglichkeit, dieses Verhalten zu implementieren?
UPDATE: Es generic typealiases scheint nun in schnellen 3 https://github.com/apple/swift/blob/master/CHANGELOG.md
Oh. Boxen. Es funktioniert immer. Vielen Dank. – mustafa
@mustafa Hallo, könnten Sie mir bitte sagen, welcher Teil davon Boxen bedeutet? Du meintest nicht Boxen im Java-Sinne, oder? Außerdem habe ich ein Problem damit meinen Kopf um '[head (string) ...' und 'tail (string)]' zu legen. Vielen Dank. – Unheilig
@Unheilig Boxing bezieht sich auf das Umhüllen eines Typs um einen anderen, um die Fähigkeiten zu nutzen, die nur im äußeren Typ gefunden werden. Sie kennen vielleicht das Konzept von Objective-C, bei dem Grundelemente wie Ganzzahlen nicht in ein NSArray übergeben werden können, ohne in einer NSNummer "eingerahmt" zu sein, z. B. "@ (1234)". Das Kopf/Schwanz-Ding ist nicht schnell spezifisch, sondern eher ein übliches Muster zum Aufteilen eines Arrays in den ersten Gegenstand (den Kopf) und die verbleibenden Gegenstände (den Schwanz). Siehe http://chris.eidhof.nl/posts/swift-tricks.html – clozach