2012-12-08 3 views
5

불행히도 officially considered not a PITAPredef.any2stringadd에 문제가 있습니다. 나는 형 클래스 접근Vapourise Predef.any2stringadd in interpreter

object Foo { 
    implicit def fooOps(f: Foo): Ops = new Ops(f) 
    final class Ops(f: Foo) { 
     def +(that: Foo): Foo = ??? 
    } 
} 
trait Foo 

trait Foo { 
    def +(that: Foo): Foo 
} 

에서 내 API를 변경 지금은 에서 그 끔찍한 방법은 다음과 같은 코드를 컴파일 숨길 수 :

import Predef.{any2stringadd => _} 

그러나, 이것이 실패 내 REPL/통역사 환경에서.

val in = new IMain(settings, out) 
in.addImports("Predef.{any2stringadd => _}") // has no effect? 

어떻게하면이 성가신 방법을 알려줄 수 있습니까?

object Foo { 
// implicit def fooOps(f: Foo): Ops = new Ops(f) 
    final class Ops(f: Foo) { 
     def +(that: Foo): Foo = ??? 
    } 
} 
trait Foo 
implicit def fooOps(f: Foo): Foo.Ops = new Foo.Ops(f) 

내가하지 않지만 :

답변

1

해결 방법은 Foo의 동반자 개체에서 암시 적 변환을하고, (내 실제 경우에 패키지 개체) 상위 계층에 배치하는 것 같다 그것이 어떤 차이를 만들어야하는지 왜 알겠습니까? 통역사가 any2stringadd을 잊어 버릴만큼 충분합니다.

(여전히 새로운 티켓은 스칼라 2.10의 문자열 보간법을 사용하면 불필요하게됩니다.)