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