Ồ, giải thích sâu là khá phức tạp.
Về cơ bản, chữ ký là:
def <<= (app: Initialize[Task[S]]): Setting[Task[S]] = macro std.TaskMacro.itaskAssignPosition[S]
Vì vậy, nó liên quan đến macro này:
/* 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)
Tôi đã sử dụng loại này của nhà điều hành khi giao dịch với AspectJ biên soạn:
products in Compile <<= products in Aspectj
Về cơ bản, nó có nghĩa là: cơ sở mã nguồn trên các tệp nguồn AspectJ (được tạo với một plugin), không phải những cái cổ điển.
Tôi diễn giải nó như là một loại "replaceAll/erase":
Thay thế các tệp để biên dịch bởi các tệp liên quan đến chú thích AspectJ.
Quá phức tạp. Nó có nghĩa là 'phụ thuộc vào << = (mọi thứ, được liệt kê, ở đây)' – pfn