Можно ли передать имя типа enum в качестве аргумента в Swift?
Я пытаюсь выяснить, можно ли передать тип enum так же, как вы можете передатьClass
объекты в Swift.
Мой фактический вариант использования немного сложнее, но для обсуждения, скажем, у меня есть дваInt
перечисления:
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"
}
}
}
Я хотел бы иметь возможность написать такую функцию:
func justAnExample(whichEnum: enum) {
let val = whichEnum(rawValue: 0)
print("description: \(String(val))")
}
И затем используйте это так:
justAnExample(Foo)
// prints: "description: Hello Foo"
justAnExample(Bar)
// prints: "description: Hello Bar"
Это возможно? Если это так, что является подписьюwhichEnum
в объявлении функции?