Неявное преобразование между типами коллекций Scala

Я хотел бы неявно преобразовать между объектом Scala XML Elem и другим представлением элемента XML, в моем случае элементом dom4j. Я написал следующие неявные преобразования:

implicit def elemToElement(e: Elem): Element = ... do conversion here ...
implicit def elementToElem(e: Element): Elem = ... do conversion here ...

Пока все хорошо, это работает.

Теперь мне также нужны наборы указанных элементов для преобразования в обоих направлениях. Во-первых, нужно ли мне писать дополнительные методы преобразования? Если бы я этого не сделал, ничего не вышло.

Я попытался написать следующее:

implicit def elemTToElementT(t: Traversable[Elem]) = t map (elemToElement(_))
implicit def elementTToElemT(t: Traversable[Element]) = t map (elementToElem(_))

Это не выглядит слишком идеальным, потому что если метод преобразования принимает Traversable, то он также возвращает Traversable. Если я прохожу список, я также получаю Traversable. Поэтому я предполагаю, что преобразование должно быть каким-то образом параметризовано.

Итак, каков стандартный способ записи этих преобразований, чтобы они были как можно более универсальными?

5
задан ebruchez 13 January 2011 в 00:13
поделиться