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ó thứ tự duyệt được xác định. Thường dùng để tích luỹ dữ liệu từ các phần phụ thuộc bắc cầu trong các 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 (do hàm type(x) tích hợp xác định), nhưng depset không chỉ là tập hợp băm và không hỗ trợ kiểm thử thành viên nhanh. Nếu cần một loại dữ liệu tập hợp chung, bạn có thể mô phỏng loại dữ liệu đó bằng cách sử dụng một từ điển trong đó tất cả các khoá ánh xạ đến True
.
Depset không thể thay đổi. Bạn nên tạo các tập hợp này bằng hàm khởi tạo và hợp nhất hoặc mở rộng với các tập hợp phần phụ thuộc khác thông qua đối số transitive
.
Tham số order
xác định loại hoạt động truy cập được thực hiện để chuyển đổi depset thành một tập hợp 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ó thể xác định)."postorder"
(trước đây là"compile"
): Thứ tự sau từ trái sang phải. Chính xác là hàm này sẽ duyệt qua tất cả các phần tử con từ trái sang phải, 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. Chính xác là phương thứ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ự tô pô từ gốc xuống lá. Không đảm bảo thứ tự từ trái sang phải.
Bạn chỉ có thể hợp nhất hai nhóm phần phụ thuộc nếu cả hai nhóm phần phụ thuộc đều có cùng thứ tự hoặc một trong hai nhóm có thứ tự "default"
. Trong trường hợp sau, thứ tự của depset thu được sẽ giống với thứ tự của depset còn lại.
Depset có thể chứa các giá trị trùng lặp nhưng các giá trị này sẽ bị loại bỏ khi lặp lại (sử dụng to_list()
). Các giá trị trùng lặp có thể ảnh hưởng đến ngữ nghĩa thứ tự.
Hội viên
to_list
list depset.to_list()Trả về danh sách các phần tử, không trùng lặp, theo thứ tự duyệt 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 các 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 nhóm phần phụ thuộc được sắp xếp theo
"default"
và cho các phần tử của nhóm phần phụ thuộc con có thứ tự khác với nhóm phần phụ thuộc 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.