โครงสร้างข้อมูลเฉพาะที่สนับสนุนการดำเนินการผสานรวมที่มีประสิทธิภาพและมีลำดับการส่งผ่านที่กำหนดไว้ โดยทั่วไปมักใช้สําหรับการรวบรวมข้อมูลจากข้อกําหนดแบบทรานซิทีฟในกฎและด้านต่างๆ ดูข้อมูลเพิ่มเติมที่นี่
องค์ประกอบของ depset ต้องแฮชได้และเป็นประเภทเดียวกันทั้งหมด (ตามที่ระบุโดยฟังก์ชัน type(x) ในตัว) แต่ depset ไม่ใช่แค่ชุดแฮชและไม่รองรับการทดสอบการเป็นสมาชิกอย่างรวดเร็ว หากต้องการประเภทข้อมูลชุดทั่วไป คุณสามารถจําลองประเภทข้อมูลดังกล่าวได้โดยใช้พจนานุกรมที่คีย์ทั้งหมดแมปกับ True
Depset จะเปลี่ยนแปลงไม่ได้ ซึ่งควรสร้างโดยใช้ฟังก์ชันตัวสร้าง และผสานหรือเสริมกับ Depset อื่นๆ ผ่านอาร์กิวเมนต์ transitive
พารามิเตอร์ order
จะกำหนดประเภทการเรียกดูที่จะทำเพื่อแปลง depset ให้เป็นรายการที่วนซ้ำได้ ค่าที่เป็นไปได้มี 4 ค่าดังนี้
"default"
(ก่อนหน้านี้คือ"stable"
): ไม่ได้ระบุคำสั่งซื้อ (แต่เป็นการกำหนด)"postorder"
(เดิมคือ"compile"
): การจัดเรียงหลังลำดับจากซ้ายไปขวา ซึ่งจะข้ามผ่านเด็กทั้งหมดที่อยู่ซ้ายสุดก่อน จากนั้นจะข้ามองค์ประกอบที่อยู่ซ้ายสุดก่อน"preorder"
(ก่อนหน้านี้เรียกว่า"naive_link"
): การสั่งจองล่วงหน้าแบบซ้ายไปขวา กล่าวอย่างละเอียดคือ การดำเนินการนี้จะไปยังองค์ประกอบโดยตรงจากซ้ายไปขวาก่อน จากนั้นจะไปยังองค์ประกอบย่อยจากซ้ายไปขวาแบบซ้ำ"topological"
(เดิมคือ"link"
): การจัดลําดับแบบทอพอโลยีจากรูทลงไปยังใบ ไม่มีการรับประกันจากซ้ายไปขวา
คุณผสานชุดข้อมูล 2 ชุดได้ก็ต่อเมื่อชุดข้อมูลทั้ง 2 ชุดมีลําดับเดียวกัน หรือชุดข้อมูลชุดใดชุดหนึ่งมีลําดับ "default"
ในกรณีหลัง ลำดับของการตั้งค่าผลลัพธ์จะเหมือนกับลำดับของอีกชุดหนึ่ง
Depset อาจมีค่าที่ซ้ำกัน แต่ระบบจะระงับค่าเหล่านี้เมื่อทำซ้ำ (โดยใช้ to_list()
) ค่าที่ซ้ำกันอาจรบกวนความหมายของการจัดเรียง
สมาชิก
to_list
list depset.to_list()แสดงรายการองค์ประกอบตามลำดับการข้ามผ่านของ Depset โดยไม่มีการทำซ้ำ โปรดทราบว่าระบบจะไม่ระบุลําดับ (แต่จะเป็นแบบกำหนดได้) สําหรับองค์ประกอบที่เพิ่มลงใน depset มากกว่า 1 ครั้ง นอกจากนี้ ระบบจะไม่ระบุลําดับสําหรับชุดข้อมูลที่มีลําดับ
"default"
และองค์ประกอบของชุดข้อมูลย่อยที่มีลําดับแตกต่างจากชุดข้อมูลหลัก รายการนี้เป็นรายการที่คัดลอกมา การแก้ไขรายการดังกล่าวจะไม่มีผลกับชุดข้อมูล ในทางกลับกัน