2016-05-08 62 views
6

Tôi thấy biểu tượng <<= ở nhiều mã SBT, nhưng tôi không làm như vậy.`<< =` có nghĩa là gì trong SBT?

Tôi đã thử googling cho biểu tượng này là tốt nhưng tôi đã không nhận được bất kỳ câu trả lời.

Bạn có thể vui lòng chỉ cho tôi một số tài liệu hoặc ví dụ giải thích rõ ràng biểu tượng này có ý nghĩa gì và biểu tượng này có ý nghĩa gì?

Trả lời

0

Ồ, giải thích sâu là khá phức tạp.

Về cơ bản, chữ ký là:

def <<= (app: Initialize[Task[S]]): Setting[Task[S]] = macro std.TaskMacro.itaskAssignPosition[S] 

Vì vậy, nó liên quan đến macro này:

/* 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) 

Tôi đã sử dụng loại này của nhà điều hành khi giao dịch với AspectJ biên soạn:

products in Compile <<= products in Aspectj 

Về cơ bản, nó có nghĩa là: cơ sở mã nguồn trên các tệp nguồn AspectJ (được tạo với một plugin), không phải những cái cổ điển.

Tôi diễn giải nó như là một loại "replaceAll/erase":
Thay thế các tệp để biên dịch bởi các tệp liên quan đến chú thích AspectJ.

+3

Quá phức tạp. Nó có nghĩa là 'phụ thuộc vào << = (mọi thứ, được liệt kê, ở đây)' – pfn

4

Hơn nữa để pfn's comment, điều này được mô tả trong tài liệu 0.12 dưới More Kinds of Settings. Tôi đoán nó đã bị loại khỏi tài liệu 0.13 vì hành vi tương tự hiện có thể được xác định theo điều khoản của :=.

Các vấn đề liên quan