Я хотел бы иметь GenericThing
с параметром шаблона любого типа, который может быть разумно преобразован в строку и из нее.
// ConvertsToAndFromString is a made up protocol here – what should I use instead?
struct GenericThing<Id: ConvertsToAndFromString> {
}
Затем я смогу использовать GenericThing
с любым типом, который имеет разумную кодировку в виде строки. Например, он должен работать для Int
, String
(ну, да) и, в идеале, для любого RawRepresentable
, где сам RawValue
будет преобразовывать в строку и из нее.
Пример:
enum Tubbies: String {
case dipsy
case laalaa
case po
}
// I'd like to be able to do this.
let genericThing = GenericThing<Tubbies>
Я не понимаю, как легко это сделать.
Я надеялся, что смогу использовать LosslessStringConvertible
вместо своего выдуманного ConvertsToAndFromString
.
Я пробовал это, и оно работает для Int
и тому подобное. Но это не работает для Tubbies
. Я не мог найти способ заставить все RawRepresentable
, где RawValue: LosslessStringConvertible
также соответствовать LosslessStringConvertible
.