É possível passar um nome de tipo de enumeração como argumento no Swift?

Estou tentando descobrir se é possível passar o tipo de enum da mesma maneira que você pode passarClass objetos no Swift.

Meu caso de uso real é um pouco mais complicado que isso, mas, para discussão, digamos que tenho doisInt enumerações:

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"
        }
    }
}

Eu gostaria de poder escrever uma função como esta:

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

E então use-o assim:

justAnExample(Foo)
// prints: "description: Hello Foo"
justAnExample(Bar)
// prints: "description: Hello Bar"

Isso é possível? Em caso afirmativo, qual é a assinatura dewhichEnum na declaração da função?

questionAnswers(2)

yourAnswerToTheQuestion