什么是 Cats 模拟中的@noop
what is @noop in simulacrum in Cats
什么是猫的@noop 注释。基本上,它不接受任何像@op 这样的字符串别名。这是它的 Scala 文档
/**
* 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
我对这份文档感到困惑。有人可以向我解释并举例说明如何使用它吗?
非常感谢
所以假设你有这个类型类:
@typeclass trait Foo[A] {
def bar(x: A)(y: A): A
}
然后您将能够(通过 simulacrum 定义的隐式语法)编写此方法:
def baz[A: Foo](x: A, y: A): A = x bar y
如果你改为用 @noop
注释 bar
方法,上面的代码不会编译成 "bar is not a member of type A",因为不会提供隐式转换A 到有 bar 方法的东西。
什么是猫的@noop 注释。基本上,它不接受任何像@op 这样的字符串别名。这是它的 Scala 文档
/**
* 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
我对这份文档感到困惑。有人可以向我解释并举例说明如何使用它吗?
非常感谢
所以假设你有这个类型类:
@typeclass trait Foo[A] {
def bar(x: A)(y: A): A
}
然后您将能够(通过 simulacrum 定义的隐式语法)编写此方法:
def baz[A: Foo](x: A, y: A): A = x bar y
如果你改为用 @noop
注释 bar
方法,上面的代码不会编译成 "bar is not a member of type A",因为不会提供隐式转换A 到有 bar 方法的东西。