2010-12-10 2 views
17

나는 약 2 알고어떤 스칼라 주석이 컴파일러의 메시지를 수정합니까?

  • @deprecated("use blabla instead")는 주석 정의가 클라이언트 코드에서 사용되는 경우 컴파일러가 경고 출력에 대한 설명을 추가하는 데 사용됩니다.
  • @implicitNotFound(msg = "more meaningful explanation")은 주석 정의의 유형을 암시 적으로 찾을 수없는 경우 추가 오류 메시지를 출력하는 데 사용됩니다.

    @implicitNotFound(msg = "Cannot construct a collection of type ${To} with elements of type ${Elem} based on a collection of type ${To}.") 
    trait CanBuildFrom[-From, -Elem, +To] { ... } 
    
: 실제 예상되는 형태와 컴파일러에 의해 채워집니다 주석 형식의 형식 매개 변수, 예를 들어 이름이 ${A} A 경우 CanBuildFrom 보면, MSG는 유형의 자리 표시자를 포함 할 수 있습니다

다른 주석이 있습니까?

+1

안녕하세요. –

+0

@Daniel 나는 그 움직임을 두 번째로 할 것이다 ... –

+0

흠, 큰 질문, 나는 그것을 지웠다.하지만 스칼라 팀에서 int를 chiming하는 누군가를 제외하고는 실제로 받아 들일만한 대답이있을 것 같지는 않다. –

답변

6

@migration이 있으며 버전간에 포트 코드를 돕기 위해 -Xmigration과 함께 사용되어 한 버전에서 다른 버전으로 방법의 의미 론적 변화를 나타냅니다.

@migration(2, 8, "As of 2.8, keys returns Iterable[A] rather than Iterator[A].") 
6

주석 처리 된 메서드에 꼬리 호출 최적화를 적용 할 수없는 경우 컴파일러에서 오류를 출력합니다.

3

스칼라 2.9부터는 @deprecatedName도 있습니다. "적용 할 매개 변수의 이름을 사용 중지 된 것으로 지정하는 주석입니다. 이름이 지정된 인수에서 해당 이름을 사용하면 지원 중단 경고가 생성됩니다. "

관련 문제