hoãn

Báo cáo vấn đề Xem nguồn Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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 tập hợp phải có thể băm và tất cả đều thuộc cùng một kiểu (như được xác định bởi hàm type(x) tích hợp). Tuy nhiên, các phần phụ thuộc 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 một loại dữ liệu bằng cách sử dụng 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, phương thức này di chuyển theo quy tắc đệ quy trên tất cả trẻ em ở lớp ngoài cùng bên trái, sau đó là các phần tử trực tiếp ở góc ngoài cùng bên trái.
  • "preorder" (trước đây là "naive_link"): Đặt hàng trước từ trái sang phải. Chính xác, thao tác này truyền tải các phần tử trực tiếp ở vị trí thứ nhất bên trái, sau đó truyền đệ quy các phần tử con ở góc ngoài cùng bên trái trước.
  • "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 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 tập hợp thu được sẽ giống với thứ tự của tập hợp 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 có các phần tử trùng lặp, theo thứ tự truyền tải của tập hợp. Lưu ý rằng thứ tự không được chỉ định (nhưng mang tính xác định) cho các phần tử đã được thêm nhiều lần vào phần khởi động. 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.