Ich versuche herauszufinden, ob es möglich ist, Enum-Typ auf die gleiche Weise zu übergeben, wie Sie Class
Objekte in Swift übergeben können.Möglich, einen Enum-Typ-Namen als ein Argument in Swift übergeben?
Meine eigentliche Anwendungsfall ist ein wenig komplizierter als das, aber für die Diskussion, sagen wir, ich habe zwei Int
Aufzählungen:
enum Foo: Int, CustomStringConvertible {
case firstFoo = 0
case anotherFoo = 1
var description: String {
switch self {
case .firstFoo:
return "Hello Foo"
case .anotherFoo:
return "Goodbye Foo"
}
}
}
enum Bar: Int, CustomStringConvertible {
case firstBar = 0
case anotherBar = 1
var description: String {
switch self {
case . firstBar:
return "Hello Bar"
case . anotherBar:
return "Goodbye Bar"
}
}
}
Ich mag würde in der Lage sein, eine Funktion wie folgt zu schreiben:
func justAnExample(whichEnum: enum) {
let val = whichEnum(rawValue: 0)
print("description: \(String(val))")
}
Und dann ist es wie folgt zu verwenden:
justAnExample(Foo)
// prints: "description: Hello Foo"
justAnExample(Bar)
// prints: "description: Hello Bar"
Ist das möglich? Wenn ja, wie lautet die Signatur von whichEnum
in der Funktionsdeklaration?
Schöne Verknüpfung zu den SO Dokumente +1 –