О, глубокое объяснение довольно сложно.
В принципе, подпись:
def <<= (app: Initialize[Task[S]]): Setting[Task[S]] = macro std.TaskMacro.itaskAssignPosition[S]
Так включает этот макрос:
/* 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)
Я уже использовал этот вид оператора при работе с AspectJ компиляции:
products in Compile <<= products in Aspectj
В основном это означает: базовый источник кода в исходных файлах AspectJ (сгенерированный с помощью plugin), а не классические.
Я интерпретирую его как своего рода «replaceAll/erase»:
Заменить кучу файлов для компиляции с помощью файлов с аннотациями AspectJ.
Слишком сложно. Это означает 'зависит от << = (все, здесь, здесь)' – pfn