2013-04-20 4 views

답변

2

당신이 쓸 때 : 나는 그것을 좋아 한 더 나은 생각

scala: not found: type A 
    implicit def basicDBList2List[List[A]](value : BasicDBList) = value.toList.asInstanceOf[List[A]] 
                          ^
+0

나는 캐스팅으로 클라이언트 코드를 오염시킬 필요가 없도록 shitty mongo java 드라이버를 포장해야합니다. 그래서 기본적으로 Mongo DB에서 특정 필드를 가져 오면 어떤 유형인지 알 수 있습니다. – expert

+0

[Casbah] (https://github.com/mongodb/casbah)를 시도하십시오 – mergeconflict

+0

Shitty casbah가 내가 implicits로 놀기 시작한 이유입니다 :) – expert

0

:

나는 오류 다음 부여합니다이

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] = ... 

....

이 스케치 코드,하지만 두 가지 이유가 있습니다 :

  1. 당신의 BasicDBList 클래스가 실제로 어떤 종류의 포함되어 있습니까? 아마도 어떤 가능성도 없습니다 A. 런타임시 매우 가능성이 높습니다 ClassCastException 얻을.
  2. 왜 암시 적 변환을 BasicDBList에서 List[A]으로 바꾸시겠습니까? 그것은 거의 항상 나쁜 생각입니다.
관련 문제