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), 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ử thành viên nhanh. Nếu cần một kiểu dữ liệu tập hợp chung, bạn có thể mô phỏng một kiểu dữ liệu bằng cách sử dụng từ điển trong đó tất cả các khoá đều ánh xạ đến True
.
Depset là bất biến. Chúng phải được tạo bằng hàm khởi tạo và được hợp nhất hoặc tăng cường bằng các depsets 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. Cụ thể, 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 đó duyệt qua các phần tử trực tiếp từ trái sang phải."preorder"
(trước đây là"naive_link"
): Một đơn đặ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 hai depsets nếu cả hai depsets có cùng thứ tự hoặc một trong số đó có thứ tự "default"
. Trong trường hợp sau, thứ tự của depset kết quả sẽ giống như 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.
Hội viên
to_list
list depset.to_list()
"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.