Мне нужна универсальная c функция, которая может создавать экземпляры объекта нескольких различных enum
типов, которые у меня есть, предоставляя тип enum и необработанное значение Int
. Эти enum
s также CustomStringConvertible
.
Я пробовал это:
func myFunc(type: CustomStringConvertible.Type & RawRepresentable.Type, rawValue: Int)
, что приводит к 3 ошибкам:
- Не протокол, не -класс типа 'CustomStringConvertible.Type' не может использоваться в типе с ограничением протокола
- Недопустимый тип без класса 'RawRepresentable.Type' не может использоваться в типе с ограничением протокола
- Протокол 'RawRepresentable' может использоваться только в качестве общего c ограничения, поскольку он имеет собственные требования или связанные с ними требования к типу
На данный момент забывая о CustomStringConvertible`, я также попытался:
private func myFunc<T: RawRepresentable>(rawValue: Int, skipList: [T]) {
let thing = T.init(rawValue: rawValue)
}
Но, хотя завершение кода предполагает это, приводит к ошибке о T.init(rawValue:)
:
- Невозможно вызвать 'init' со списком аргументов типа '(rawValue: Int)'
Как я могу создать работающую обобщенную c функцию, подобную этой?