在Cats的simulacrum中是什么是@noop

时间:2015-09-06 07:41:47

标签: scala scala-cats

什么是猫的@noop注释。基本上,它不接受任何字符串别名,如@op。这是scala doc for it

/**
 * Annotation that may be applied to methods on a type that is annotated with `@typeclass`.
 *
 * Doing so results in the method being excluded from the generated syntax ops type.
 */
class noop() extends StaticAnnotation

我对此文档感到困惑。有人可以向我解释并给我一个关于如何使用它的例子吗?

非常感谢提前

1 个答案:

答案 0 :(得分:3)

所以我们假设你有这个类型类:

@typeclass trait Foo[A] {
     def bar(x: A)(y: A): A
}

您将能够(通过simulacrum定义的隐式语法)能够编写此方法:

def baz[A: Foo](x: A, y: A): A = x bar y

如果您要使用bar注释@noop方法,上面的内容将无法编译,例如" bar不是A"类型的成员,因为它不会#39;是从A提供给具有bar方法的隐式转换。