对于具有以下签名的方法,我收到错误type N is unused or used in non-specializable positions.
:
protected def offsetFrom0[@specialized(Int,Long) N](offsetFrom1 : Codec[N])(implicit N : Integral[N]) : Codec[N]
有人可以用非专业人的术语向我解释有关专业化的规则是什么吗?
答案 0 :(得分:2)
@specialized
注释只能用于类类型参数。您可以在源文档here中看到它。因此,在您的情况下,您可以采取以下措施:
case class Offset[@specialized(Int, Long) N](offsetFrom1: N) {
def offsetFrom0: N = ???
}
Offset(1).offsetFrom0
Offset(1L).offsetFrom0