Oh, die tiefe Erklärung ist ziemlich kompliziert.
Grundsätzlich ist die Signatur:
def <<= (app: Initialize[Task[S]]): Setting[Task[S]] = macro std.TaskMacro.itaskAssignPosition[S]
So ist es diesen Makro beinhaltet:
/* 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)
ich diese Art des Betreibers bereits verwendet, wenn mit AspectJ Kompilierung zu tun:
products in Compile <<= products in Aspectj
Grundsätzlich bedeutet dies: Basis die Quelltextquelle auf den AspectJ Quelldateien (generiert mit einem plugin), nicht die klassischen.
Ich interpretiere es als eine Art "replaceAll/Erase":
Ersetzen Haufen von Dateien, um von den Dateien mit AspectJ Anmerkungen zu kompilieren.
Viel zu kompliziert. Es bedeutet "hängt ab von << = (alles, aufgeführt, hier)" – pfn