phần phụ thuộc

Báo cáo sự cố Xem nguồn

Cấu trúc dữ liệu chuyên biệt hỗ trợ các hoạt động hợp nhất hiệu quả và có thứ tự truyền tải đã 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 các quy tắc và chương trình. Để biết thêm thông tin, hãy xem tại đây.

Các phần tử của một phần phụ thuộc 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 tích hợp(x)), nhưng các phần phụ thuộc không chỉ đơn giản 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 kiểu dữ liệu bằng từ điển trong đó tất cả các khoá liên kết với True.

Phần phụ thuộc là không thể thay đổi. Bạn nên tạo các hàm này bằng cách sử dụng hàm khởi tạo và hợp nhất hoặc tăng cường với các phần phụ thuộc khác thông qua đối số transitive.

Tham số order xác định kiểu truyền tải được thực hiện để chuyển đổi phần phụ thuộc thành một chuỗi lặp lại. Có bốn giá trị có thể là:

  • "default" (trước đây là "stable"): Thứ tự không xác định (nhưng mang tính xác định).
  • "postorder" (trước đây là "compile"): Thứ tự từ trái sang phải. Chính xác thì định kỳ này sẽ chuyển tất cả các phần tử con ở ngoài cùng trước bên trái, sau đó là phần tử trực tiếp ở 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 thì chức năng này truyền tải các phần tử trực tiếp ở ngoài cùng bên trái, sau đó truyền tải đệ quy các phần tử con ở ngoài cùng bên trái.
  • "topological" (trước đây là "link"): Thứ tự cấu trúc liên kết từ gốc xuống lá. Không có sự đảm bảo nào từ trái sang phải.

Hai phần phụ thuộc chỉ có thể được hợp nhất nếu cả hai phần phụ thuộc có cùng thứ tự hoặc một trong hai phần phụ thuộc đó có thứ tự "default". Trong trường hợp thứ hai, thứ tự của phần phụ thuộc kết quả sẽ giống với thứ tự của phần còn lại.

Phần phụ thuộc có thể chứa các giá trị trùng lặp nhưng những giá trị này sẽ bị chặn khi lặp lại (sử dụng to_list()). Các phần trùng lặp có thể ảnh hưởng đến ngữ nghĩa của thứ tự.

Hội viên

để_danh_sách

list depset.to_list()

Trả về danh sách các phần tử (không có bản trùng lặp) theo thứ tự truyền tải của phần phụ thuộc. Lưu ý rằng thứ tự không xác đị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 tập hợp con. Thứ tự cũng không được chỉ định cho các phần phụ thuộc "default" và cho các phần tử của phần phụ thuộc con có thứ tự khác với thứ tự của phần phụ thuộc. Danh sách này là một bản sao; việc sửa đổi sẽ không ảnh hưởng đến phần phụ thuộc và ngược lại.