내 경우 dom4j 요소에서 Scala XML Elem 객체와 XML 요소의 다른 표현 사이를 암시 적으로 변환하고 싶습니다. 나는 다음과 같은 암시 적 변환을 썼다 :Scala 컬렉션 유형 간의 암시 적 변환
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(_))
이 너무 이상적 보이지 않는 :
나는 다음과 같은 작성했습니다. List를 통과하면 Traversable도 나옵니다. 그래서 저는 변환이 어떻게 든 매개 변수 화되어야한다고 가정합니다.가능한 한 일반적인 것으로 만들기 위해 이러한 변환을 작성하는 표준 방법은 무엇입니까?
'List [X]'에서'List [Y]'로 자동 변환하는 것이 왜 더 이상 혼란 스럽습니까? 이것은 정확히 동일한 요구를 채 웁니다. 즉, 어떤 표현이 사용되는지에 대해 실제로 신경 쓰지 않고 컴파일러가 당신을 위해 바쁜 일을 처리하기를 원합니다. –
크게 스타일과 모범 사례의 문제입니다. 많은 마술이 문제를 요구하고 있다는 것을 함축적으로 요구하십시오. 저의 견해에 따르면, 그들은 스칼라의 BFG 중 하나입니다 : 당신이 가리키는 것을주의하십시오. – sblundy
나는 Rex와 동의한다. 나는 그것이 혼란 스럽다는 것에 동의하지 않는다. 반대로, 주어진 유형의 암시 적 변환을 정의하면 자동으로 해당 유형의 컨테이너 ("모나 딕 (monadic)"이라고 함)의 암시 적 변환도 자동으로 이루어지기를 기대했을 것입니다. – ebruchez