Это мое перечисление:
enum E {
case a(Int), b(String)
}
Типы значений, связанные с enum, уникальны и всегда точно один.
Допустим, у меня есть эта переменная:
let myInt = 0
Я хочу создать экземпляр E
на основе переменной myInt
, , динамически . Это должно привести к:
E.a(0)
Но в «реальном мире» я не знаю, какую собственность я получу. Я знаю только одно: я могу инициализировать enum E
с ним. Мне нужно динамически инициализировать перечисление, основанное на значении свойства. В настоящее время у меня есть огромное переключение на свойство для инициализации перечисления, я не хочу этого.
Но я понятия не имею, как выполнить эту задачу. Я попытался отразить тип enum, но у меня сложный тип, и я понятия не имею, как продолжить его инициализацию, даже если я знаю типы.
Итак, я получаю свойство определенного типа. Я знаю, что определенный тип совпадает с регистром в enum E, потому что существует ровно один случай, ассоциированное значение которого соответствует типу свойства. Я хочу инициализировать экземпляр этого перечисления этим случаем со значением свойства.