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