สร้างรายการ Iterators ด้วยคำสั่ง "foreach" ของ Linux

เมื่อ เขียนโปรแกรม คำสั่ง foreach จะ ใช้ลูปที่ตัวแปรลูปถือว่าค่าจากหนึ่งหรือหลายรายการ ในกรณีที่ง่ายที่สุดมีตัวแปรลูปหนึ่งชื่อ varname และหนึ่งรายการ ลิส ต์ซึ่งเป็นรายการค่าที่กำหนดให้กับ varname อาร์กิวเมนต์ ของร่างกาย เป็นสคริปต์ Tcl สำหรับแต่ละองค์ประกอบของ รายการ (ตามลำดับตั้งแต่ต้นจนจบ) foreach กำหนดเนื้อหาของ element ให้เป็น varname เหมือนกับที่เคยใช้คำสั่ง lindex เพื่อแยกส่วนประกอบจากนั้นเรียก Tcl interpreter เพื่อเรียกใช้ body

สรุป

foreach varname ตัวรายการ
foreach varlist1 list1 ? varlist2 list2 ... ? ร่างกาย

การสนทนา

ในกรณีทั่วไปอาจมีรายการค่ามากกว่าหนึ่งรายการ (เช่น list1 และ list2 ) และแต่ละรายการค่าสามารถเชื่อมโยงกับรายการตัวแปรลูป (เช่น varlist1 และ varlist2 ) ในระหว่างการวนซ้ำแต่ละรอบตัวแปรต่างๆของแต่ละตัวแปรจะกำหนดค่าติดต่อกันจาก รายการที่ เกี่ยวข้อง ค่าในแต่ละ รายการ จะใช้ตามลำดับตั้งแต่ต้นจนจบและแต่ละค่าจะถูกใช้เพียงครั้งเดียว จำนวนรวมของการวนรอบซ้ำมีขนาดใหญ่พอที่จะใช้ค่าทั้งหมดจากรายการค่าทั้งหมด หากรายการค่าไม่ประกอบด้วยองค์ประกอบเพียงพอสำหรับแต่ละตัวแปรลูปในการวนซ้ำแต่ละครั้งจะใช้ค่าว่างสำหรับองค์ประกอบที่ขาดหายไป

คำสั่ง break and continue อาจถูกเรียกภายใน body โดยมีผลเหมือนกับในคำสั่ง for f oreach ส่งกลับสตริงที่ว่างเปล่า

ตัวอย่าง

ลูปต่อไปนี้ใช้ i และ j เป็นตัวแปรลูปเพื่อย้ำถึงคู่ขององค์ประกอบของรายการเดียว

set x {} foreach {ij} {abcdef} {lappend x $ j $ i} # ค่าของ x คือ "badcfe" # มีการวนซ้ำซ้ำ 3 ครั้ง

ลูปถัดไปใช้ i และ j เพื่อทำซ้ำสองรายการแบบขนาน

เซต x {} foreach i {abc} j {defg} {lappend x $ i $ j} # ค่าของ x คือ "adbecf {} g" # มีการวนซ้ำซ้ำ 4 ครั้ง

ทั้งสองแบบจะรวมกันในตัวอย่างต่อไปนี้

set x {} foreach i {abc} {jk} {defg} {lappend x $ i $ j $ k} # ค่าของ x คือ "adebfgc {} {}" # มีการวนซ้ำ 3 ครั้งของลูป

หมายเหตุ

หลายคำสั่งที่เกี่ยวข้องทำงานร่วมกับ foreach ได้แก่ :

เนื่องจากการ แจกจ่ายลินุกซ์ และระดับการเผยแพร่เคอร์เนลแตกต่างกันให้ใช้คำสั่ง man ( % man ) เพื่อดูว่าคำสั่งถูกใช้เฉพาะใน คอมพิวเตอร์เครื่อง ใดของคุณโดยเฉพาะ