2016-05-08 15 views
6

Vedo questo simbolo <<= in molti codici SBT, ma non faccio quello che fa.Cosa significa `<< =` in SBT?

Ho provato a cercare su google anche questo simbolo, ma non ho ricevuto alcuna risposta.

Potete per favore indicarmi qualche documentazione o un esempio che spieghi chiaramente cosa significa questo simbolo e cosa fa?

risposta

0

Oh, la spiegazione profonda è piuttosto complicata.

In sostanza, la firma è:

def <<= (app: Initialize[Task[S]]): Setting[Task[S]] = macro std.TaskMacro.itaskAssignPosition[S] 

Quindi si tratta di questa macro:

/* Implementations of <<= macro variations for tasks and settings. These just get the source position of the call site.*/ 

    def itaskAssignPosition[T: c.WeakTypeTag](c: Context)(app: c.Expr[Initialize[Task[T]]]): c.Expr[Setting[Task[T]]] = 
     settingAssignPosition(c)(app) 

ho già usato questo tipo di operatore quando si tratta di compilazione AspectJ:

products in Compile <<= products in Aspectj 

Fondamentalmente, significa: basare la sorgente del codice sui file di origine AspectJ (generati con un plugin), non quelli classici.

L'interpreto come una sorta di "replaceAll/cancella":
Sostituire un gruppo di file da compilare in base ai file che includono le annotazioni di AspectJ.

+3

Molto troppo complicato. Significa 'depends-on << = (tutto, elencato, qui)' – pfn

4

Oltre a pfn's comment, questo è descritto nei documenti 0.12 in More Kinds of Settings. Immagino che sia stato rilasciato dai documenti 0.13 perché ora è possibile definire lo stesso comportamento in termini di .