2013-11-22 3 views
1

다음 코드를 사용하여 newMethod 메서드를 List 클래스에 추가하려고합니다.List에 새로운 암시 적 메서드를 정의 할 때 오류가 발생했습니다.

implicit class ListCompanionOps(f: List.type) extends AnyVal { 
    def newMethod(p: String) = { 
    println(p) 
    } 
} 

그러나 컴파일러는 다음과 같은 오류와 불만 : 내가 잘못 뭐하는 거지

$ scalac test.scala 
test.scala:3: error: ListCompanionOps is already defined as (compiler-generated) method ListCompanionOps 
implicit class ListCompanionOps(f: List.type) extends AnyVal { 
      ^
one error found 

?

감사

답변

5

그것은해야한다 :

implicit class ListCompanionOps[A](val f: List[A]) extends AnyVal { 

List.typeList라는 일부 개체의 유형을 의미 할 것입니다.

+1

이제 다른 오류가 발생합니까? 오류 : 최상위 개체에 '암시 적'한정자를 사용할 수 없습니다. 암시 적 클래스 ListCompanionOps [A] (f : List [A]) { ^ 오류가 하나 있음 – simao

+1

예, 매우 성가신 오류입니다. 최상위 레벨이 아닌 다른 곳에 무언가를 넣어야합니다. 당신이 REPL에서 일하지 않는다면 - 작동합니다. 그러나 실제 프로그램에는 없습니다. –

+0

아, 그건 모두 잘못 됐어! 그것은'List.type'에서만 작동합니다. 그러나'object. 감사합니다 – simao

관련 문제