hoãn

Một cấu trúc dữ liệu đặc biệt hỗ trợ các thao tác hợp nhất hiệu quả và có thứ tự duyệt 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 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 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ởi hàm type(x) tích hợp sẵn), nhưng depset không chỉ là tập hợp băm và không hỗ trợ các bài kiểm tra 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, 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. Bạn nên tạo depset bằng hàm khởi tạo của chúng 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 duyệt đượ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 mang tính xác định).
  • "postorder" (trước đây là "compile"): Thứ tự sau từ trái sang phải. Chính xác là thao tác này sẽ duyệt đệ quy 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"): Thứ tự trước từ trái sang phải. Chính xác là thao tác này sẽ duyệt các phần tử trực tiếp từ trái sang phải, sau đó duyệt đệ quy các phần tử con từ trái sang phải.
  • "topological" (trước đây là "link"): Thứ tự tô pô từ gốc xuống lá. Không có gì đảm bảo thứ tự từ trái sang phải.

Bạn chỉ có thể hợp nhất 2 depset nếu cả 2 depset đều 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 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ể gây trở ngại cho 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 của depset. Xin lưu ý rằng thứ tự không được chỉ định (nhưng mang 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 đối với các depset được sắp xếp theo "default" và đối với các phần tử của depset 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.