什么`<< =`在SBT中意味着什么?

时间:2016-05-08 21:16:46

标签: scala sbt

我在很多SBT代码中看到了这个<<=符号,但我不知道它的作用。

我也尝试用谷歌搜索这个符号,但我没有得到任何答案。

请您指点一些文档或示例,清楚地说明此符号的含义及其作用是什么?

2 个答案:

答案 0 :(得分:4)

pfn's comment之后,More Kinds of Settings下的0.12文档中对此进行了描述。我想它已从0.13文档中删除,因为现在可以用:=定义相同的行为。

答案 1 :(得分: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源文件(使用plugin生成),而不是经典的。

我把它解释为一种&#34; replaceAll / erase&#34;:
替换大量文件以通过涉及AspectJ注释的文件进行编译。