2015-09-06 2 views
3

Что такое @noop аннотация для кошек. В принципе, он не принимает ни одного псевдонима String, такого как @op. Это scala doc для негоЧто такое @noop in simulacrum in Cats

/** 
* 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 

Я смущен этой документацией. Может ли кто-нибудь объяснить мне, а также дать мне пример о том, как его использовать?

Большое спасибо заранее

ответ

2

так что позволяет сказать, у вас есть этот класс типов:

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

вы бы тогда быть в состоянии (с помощью неявного синтаксиса, определенного симулякра), быть в состоянии написать этот метод:

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

Если вы должны были вместо этого аннотировать метод bar с помощью @noop, вышеприведенное не компилировало бы что-то вроде «bar is not член типа A ", потому что не было бы неявного преобразования, предоставляемого от A, к тому, что имеет метод бара.

Смежные вопросы