用法:
final class implicitNotFound(msg: String) extends ConstantAnnotation
要自定义在找不到 C[T1,..., TN]
类型的隐式时发出的错误消息,请使用 @implicitNotFound
注释类 C
.假设 C
具有类型参数 X1, ..., XN
,错误消息将是用相应类型参数 Ti
的字符串表示替换字符串 msg
中所有出现的 ${Xi}
的结果。如果子类型没有注解,注解就会被子类型有效地继承。
注释也可以附加到隐式参数。在这种情况下,${Xi}
可以引用当前范围内的类型参数。参数上的@implicitNotFound
消息优先于参数类型上的消息。
import scala.annotation.implicitNotFound
@implicitNotFound("Could not find an implicit C[${T}, ${U}]")
class C[T, U]
class K[A] {
def m[B](implicit c: C[List[A], B]) = 0
def n[B](implicit @implicitNotFound("Specific message for C of list of ${A} and ${B}") c: C[List[A], B]) = 1
}
object Test {
val k = new K[Int]
k.m[String]
k.n[String]
}
编译器发出以下错误消息:
Test.scala:13: error: Could not find an implicit C[List[Int], String]
k.m[String]
^
Test.scala:14: error: Specific message for C of list of Int and String
k.n[String]
^
相关用法
- Scala annotation.implicitAmbiguous用法及代码示例
- Scala annotation.ConstantAnnotation用法及代码示例
- Scala annotation.showAsInfix用法及代码示例
- Scala annotation.nowarn用法及代码示例
- Scala annotation.switch用法及代码示例
- Scala annotation.elidable用法及代码示例
- Scala any.!=用法及代码示例
- Scala any.ToString用法及代码示例
- Scala any.==用法及代码示例
- Scala any.IsConst用法及代码示例
- Scala aggregate()用法及代码示例
- Scala Tabulate.sliding用法及代码示例
- Scala ArrayBuffer.inits用法及代码示例
- Scala long.BitwiseOr用法及代码示例
- Scala StringBuilder.partitionMap用法及代码示例
- Scala List distinct()用法及代码示例
- Scala DefaultMap.sizeIs用法及代码示例
- Scala StrictOptimizedIterableOps.sliding用法及代码示例
- Scala Searching.SearchResult用法及代码示例
- Scala ::.collectFirst用法及代码示例
- Scala TreeSet diff()用法及代码示例
- Scala Char getClass()用法及代码示例
- Scala int.Min用法及代码示例
- Scala IntMap.groupMap用法及代码示例
- Scala Map3.mkString用法及代码示例
注:本文由纯净天空筛选整理自scala-lang.org大神的英文原创作品 annotation.implicitNotFound。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。