Расширение универсального класса

у меня есть класс

class MyClass<T> { /***/ }

который я хочу расширить:

extension MyClass where T: Codable & RawRepresentable & CaseIterable { /***/ }

Я хочу ограничить расширение RawValues ​​типа String, поэтому я пытаюсь сделать что-то вроде:

extension MyClass where T: Codable & RawRepresentable & CaseIterable, RawValue == String { 
   func doSomething() {
      print("doing something with strings!")
   }
}

конечно это не работает, но есть ли способ заставить это работать?

Было бы полезно быть как можно более явным


person Eric    schedule 17.09.2020    source источник


Ответы (1)


Ваш синтаксис просто немного неверен. RawValue принадлежит T, поэтому вам нужно сослаться на него таким образом:

extension MyClass where T: Codable & RawRepresentable & CaseIterable,
                        T.RawValue == String { ... }
                        ^^
person Rob Napier    schedule 17.09.2020
comment
Я знал, что это что-то простое! Спасибо! - person Eric; 18.09.2020