2016-05-08 202 views
6

我在很多SBT代碼中看到這個<<=符號,但我不知道它的作用。SBT中`<< =`是什麼意思?

我試着用google搜索這個符號,但是我沒有得到任何答案。

請你指點一些文檔或例子,它清楚地解釋了這個符號是什麼意思,它是做什麼的?

回答

0

哦,深層的解釋是相當複雜的。

基本上,簽名是:

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源文件(由生成10),而不是經典的。

我把它解釋爲一種「replaceAll/erase」:
用涉及AspectJ註釋的文件替換一堆文件進行編譯。

+3

太複雜了。它意味着'依賴於<< =(這裏列出的所有東西)' – pfn