В книге Swift пример для перечислений работает отлично
enum CompassPoint: String {
case north, south, east, west
}
var northCom = CompassPoint.north
print (northCom)
Однако я хочу использовать сбойный инициализатор, поэтому сделал пример этого
enum WeekDay: String {
case monday, tuesday, wednesday, thursday, friday
init?(rawValue: Int){
switch rawValue {
case 0 : self = .monday
case 1 : self = .tuesday
case 2 : self = .wednesday
case 3 : self = .thursday
case 4 : self = .friday
default : return nil
}
}
}
И получаю ошибку, что Weekday не соответствует RawRepresentable - хотя я считаю, что соответствие должно быть синтезировано компилятором, поэтому не понимаю, почему это не компилируется.
Что я сделал Создал похожий рабочий пример (чтобы увидеть, в чем проблема), и все же я хочу соответствовать RawRepresentable, используя enum с ошибочным инициализатором. Я не могу найти пример этого в книге Swift, в вопросах переполнения стека или в более широком Интернете.
Что я предоставил Приведенный выше полный пример с ошибкой, а также рабочий пример ожидаемого поведения.
Что бесполезно Ссылка на книгу Swift через ссылку или комментарий бесполезна, как я взял пример оттуда. Я хочу опираться на этот пример с неисправным инициализатором. Также не полезно НЕ использовать перечисление или неисправный инициализатор. Вопрос в том, чтобы использовать отказавший инициализатор с перечислением и соответствовать RawRepresentable. Это не домашняя работа, но это ограничения вопроса для моего собственного обучения, и я заинтересован в результате.
Вопрос Как я могу использовать неисправный инициализатор с перечислением, как в нерабочем примере?