Kann in Swift ein Name des Aufzählungstyps als Argument übergeben werden?

Ich versuche herauszufinden, ob es möglich ist, den Typ von enum auf die gleiche Weise zu umgehen, wie Sie es tun könnenClass Objekte in Swift.

Mein tatsächlicher Anwendungsfall ist etwas komplizierter als dieser, aber zur Diskussion nehmen wir an, ich habe zweiInt enums:

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 möchte in der Lage sein, eine Funktion wie diese zu schreiben:

func justAnExample(whichEnum: enum) {
    let val = whichEnum(rawValue: 0)
    print("description: \(String(val))")
}

Und dann benutze es so:

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?