我在很多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