我在很多SBT代碼中看到這個<<=
符號,但我不知道它的作用。SBT中`<< =`是什麼意思?
我試着用google搜索這個符號,但是我沒有得到任何答案。
請你指點一些文檔或例子,它清楚地解釋了這個符號是什麼意思,它是做什麼的?
我在很多SBT代碼中看到這個<<=
符號,但我不知道它的作用。SBT中`<< =`是什麼意思?
我試着用google搜索這個符號,但是我沒有得到任何答案。
請你指點一些文檔或例子,它清楚地解釋了這個符號是什麼意思,它是做什麼的?
哦,深層的解釋是相當複雜的。
基本上,簽名是:
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註釋的文件替換一堆文件進行編譯。
進一步到pfn's comment,這在0.12
文檔More Kinds of Settings下描述。我想它是從0.13
文檔中刪除的,因爲現在可以根據:=
定義相同的行爲。
太複雜了。它意味着'依賴於<< =(這裏列出的所有東西)' – pfn