É 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?