2016-05-08 3 views
6

Я вижу этот <<= символ в большом количестве кода SBT, но я не понимаю, что он делает.Что означает `<< =` в SBT?

Я попробовал поиск по этому символу, но у меня не было ответов.

Не могли бы вы указать мне какую-либо документацию или пример, который ясно объясняет, что означает этот символ и что он делает?

ответ

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), а не классические.

Я интерпретирую его как своего рода «replaceAll/erase»:
Заменить кучу файлов для компиляции с помощью файлов с аннотациями AspectJ.

+3

Слишком сложно. Это означает 'зависит от << = (все, здесь, здесь)' – pfn

4

В дополнение к pfn's comment, это описано в документах 0.12 под номером More Kinds of Settings. Я предполагаю, что он был удален из документов 0.13, потому что такое же поведение теперь можно определить с точки зрения :=.

Смежные вопросы