스칼라 제네릭 함수에서 중첩 형식을 사용하려면 어떻게해야합니까?스칼라 제네릭 함수에서 중첩 형식을 사용할 수 있습니까?
implicit def basicDBList2List[A](value : BasicDBList) = value.toList.asInstanceOf[List[A]]
스칼라 제네릭 함수에서 중첩 형식을 사용하려면 어떻게해야합니까?스칼라 제네릭 함수에서 중첩 형식을 사용할 수 있습니까?
implicit def basicDBList2List[A](value : BasicDBList) = value.toList.asInstanceOf[List[A]]
당신이 쓸 때 : 나는 그것을 좋아 한 더 나은 생각
scala: not found: type A
implicit def basicDBList2List[List[A]](value : BasicDBList) = value.toList.asInstanceOf[List[A]]
^
:
나는 오류 다음 부여합니다이implicit def basicDBList2List[List[A]](value : BasicDBList) = value.toList.asInstanceOf[List[A]]
컴파일러 같은 것을 구현하고 싶습니다
implicit def basicDBList2List[List[A]](value: BasicDBList) = ...
... 그럴 수 없습니다. 당신이 생각하는 것을 의미합니다. 라이브러리의 기존 List
특성을 참조하지 않고 List
이라는 새로운 유형 매개 변수를 선언했습니다. 새로 정의한 List
유형에 A
이라고 불리는 일부 유형 매개 변수가 필요하다고 선언하고 있지만 실제로 참조 할 수는 없습니다. 아마 당신은 무엇을 의미
했다 : 모든 종류의 A
를 들어, List[A]
에 BasicDBList
을 변환 할 수 있다고 말한다
implicit def basicDBList2List[A](value: BasicDBList): List[A] = ...
....
이 스케치 코드,하지만 두 가지 이유가 있습니다 :
BasicDBList
클래스가 실제로 어떤 종류의 포함되어 있습니까? 아마도 어떤 가능성도 없습니다 A
. 런타임시 매우 가능성이 높습니다 ClassCastException
얻을.BasicDBList
에서 List[A]
으로 바꾸시겠습니까? 그것은 거의 항상 나쁜 생각입니다.
나는 캐스팅으로 클라이언트 코드를 오염시킬 필요가 없도록 shitty mongo java 드라이버를 포장해야합니다. 그래서 기본적으로 Mongo DB에서 특정 필드를 가져 오면 어떤 유형인지 알 수 있습니다. – expert
[Casbah] (https://github.com/mongodb/casbah)를 시도하십시오 – mergeconflict
Shitty casbah가 내가 implicits로 놀기 시작한 이유입니다 :) – expert