Depset

รายงานปัญหา ดูแหล่งที่มา รุ่น Nightly · 7.4 7.3 · 7.2 · 7.1 · 7.0 · 6.5

โครงสร้างข้อมูลที่เฉพาะเจาะจงซึ่งรองรับการดำเนินการผสานที่มีประสิทธิภาพและมีลําดับการเรียกดูที่กําหนดไว้ โดยทั่วไปมักใช้สําหรับการรวบรวมข้อมูลจากข้อกําหนดแบบทรานซิทีฟในกฎและด้านต่างๆ ดูข้อมูลเพิ่มเติมได้ที่นี่

องค์ประกอบของ depset ต้องแฮชได้และเป็นประเภทเดียวกันทั้งหมด (ตามที่ระบุโดยฟังก์ชัน type(x) ในตัว) แต่ depset ไม่ใช่แค่ชุดแฮชและไม่รองรับการทดสอบการเป็นสมาชิกอย่างรวดเร็ว หากต้องการประเภทข้อมูลชุดทั่วไป คุณสามารถจําลองประเภทข้อมูลดังกล่าวได้โดยใช้พจนานุกรมที่คีย์ทั้งหมดแมปกับ True

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 มากกว่า 1 ครั้ง นอกจากนี้ ระบบจะไม่ระบุลําดับสําหรับชุดข้อมูลที่มีลําดับ "default" และองค์ประกอบของชุดข้อมูลย่อยที่มีลําดับแตกต่างจากชุดข้อมูลหลัก รายการนี้เป็นรายการที่คัดลอกมา การแก้ไขรายการดังกล่าวจะไม่มีผลกับชุดข้อมูล ในทางกลับกัน