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 qua được 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ỉ khi 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 depset 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ó:
Bạn chỉ có thể hợp nhất hai 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.
Depset 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.
Link nội dung: https://www.sachhayonline.com/bang-phan-tu-khoi-a53233.html