2016-02-12 103 views

回答

1

顯然,這根據lang spec存在於語言:

表達式E的註釋表達式e, 由冒號分隔後出現。

所以這應該工作:

object TestAnnotation { 
    val o = Some(1) 

    def f = o.map(_ + 1 : @deprecated("gone", "forever")) 

    val e = { 1 + 2 } : @deprecated("hmm", "y") 

    println(f) 
    println(e) 
} 

然而,當我與scalac -deprecation編譯我沒有得到任何警告任何責任。我打開了一個問題here,得到了一個不支持的響應。你可以使用

一個解決辦法是單獨聲明拉姆達:

object TestAnnotation { 
    val o = Some(1) 

    @deprecated("this", "works") val deprecatedLambda: Int => Int = _ + 1 

    o.map(deprecatedLambda) 
} 

scalac然後給出:

Annotation.scala:6: warning: value deprecatedLambda in object TestAnnotation is deprecated: this 
    o.map(deprecatedLambda) 
     ^
one warning found 
相關問題