2016-05-08 156 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