hoãn

Một cấu trúc dữ liệu chuyên biệt hỗ trợ các thao tác hợp nhất hiệu quả và có một thứ tự duyệt xác định. Thường được dùng để tích luỹ dữ liệu từ các phần phụ thuộc bắc cầu trong quy tắc và khía cạnh. Để biết thêm thông tin, hãy xem tại đây.

Các phần tử của một depset phải có thể băm và tất cả đều thuộc cùng một loại (như được xác định bằng hàm type(x) tích hợp sẵn), nhưng depset không chỉ là các tập hợp băm và không hỗ trợ các kiểm thử nhanh về tư cách thành viên. Nếu cần một kiểu dữ liệu tập hợp chung, hãy sử dụng kiểu tập hợp Starlark cốt lõi (có từ Bazel 8.1); nếu tệp .bzl của bạn cần tương thích với các bản phát hành Bazel cũ, bạn có thể mô phỏng một tập hợp bằng cách sử dụng từ điển trong đó tất cả các khoá đều ánh xạ đến True.

Khi được kiểm tra tính đúng (tức là khi được dùng trong một ngữ cảnh Boolean như if d: trong đó d là một depset), depset sẽ là True nếu và chỉ nếu depset đó không trống; bước kiểm tra này là một thao tác O(1).

Depset là bất biến. Bạn nên tạo các đối tượng này bằng hàm khởi tạo và hợp nhất hoặc tăng cường bằng các depset khác thông qua đối số transitive.

Tham số order xác định loại hoạt động duyệt qua được thực hiện để chuyển đổi depset thành một đối tượng có thể lặp lại. Có 4 giá trị có thể có:

  • "default" (trước đây là "stable"): Thứ tự không được chỉ định (nhưng có tính xác định).
  • "postorder" (trước đây là "compile"): Thứ tự đăng từ trái sang phải. Chính xác là thao tác này sẽ duyệt qua tất cả các phần tử con từ trái sang phải theo cách đệ quy, sau đó là các phần tử trực tiếp từ trái sang phải.
  • "preorder" (trước đây là "naive_link"): Đặt hàng trước từ trái sang phải. Cụ thể, thao tác này sẽ duyệt qua các phần tử trực tiếp từ trái sang phải, sau đó duyệt qua các phần tử con từ trái sang phải theo cách đệ quy.
  • "topological" (trước đây là "link"): Thứ tự liên kết từ gốc xuống các nút lá. Không có gì đảm bảo rằng bạn sẽ đọc từ trái sang phải.

Bạn chỉ có thể hợp nhất 2 depsets nếu cả hai depsets có cùng thứ tự hoặc một trong hai depsets có thứ tự "default". Trong trường hợp sau, thứ tự của depset kết quả sẽ giống với thứ tự của depset khác.

Deps có thể chứa các giá trị trùng lặp nhưng các giá trị này sẽ bị chặn khi lặp lại (bằng cách sử dụng to_list()). Các giá trị trùng lặp có thể ảnh hưởng đến ngữ nghĩa sắp xếp.

Hội viên

to_list

list depset.to_list()

Trả về danh sách các phần tử (không có phần tử trùng lặp) theo thứ tự duyệt qua của depset. Xin lưu ý rằng thứ tự không được chỉ định (nhưng có tính xác định) đối với những phần tử được thêm nhiều lần vào depset. Thứ tự cũng không được chỉ định cho các depsets được sắp xếp theo "default" và cho các phần tử của depsets con có thứ tự khác với thứ tự của depset mẹ. Danh sách này là một bản sao; việc sửa đổi danh sách này không ảnh hưởng đến depset và ngược lại.