เมื่อเขียนโปรแกรมแต่ละ คำสั่งดำเนินการวนรอบที่ตัวแปรลูปถือว่าค่าจากรายการอย่างน้อยหนึ่งรายการ ในกรณีที่ง่ายที่สุดมีตัวแปรลูปหนึ่ง varName , และหนึ่งรายการ, รายการ นั่นคือรายการค่าที่จะกำหนดให้ varName . ร่างกาย อาร์กิวเมนต์เป็นสคริปต์ Tcl สำหรับแต่ละองค์ประกอบของ รายการ (เรียงตามลำดับจากอันดับแรก)แต่ละ กำหนดเนื้อหาขององค์ประกอบให้ varName ราวกับว่าLindexคำสั่งถูกใช้เพื่อแยกองค์ประกอบจากนั้นเรียก Tcl interpreter เพื่อดำเนินการ ร่างกาย .
สรุป
แต่ละ ชื่อรายการ varname
แต่ละ varlist1 list1 ? varlist2 list2 … ? ร่างกาย
การสนทนา
ในกรณีทั่วไปอาจมีรายการค่ามากกว่าหนึ่งรายการ (เช่น List1 และ List2 ) และแต่ละรายการค่าสามารถเชื่อมโยงกับรายการตัวแปรลูป (เช่น varlist1 และ varlist2 ) ในแต่ละรอบของวนซ้ำแต่ละตัวแปร varlist ได้รับมอบหมายค่าติดต่อจากที่สอดคล้องกัน รายการ . ค่านิยมในแต่ละ รายการ จะใช้ในการสั่งซื้อจากครั้งแรกจนถึงสุดท้ายและแต่ละค่าจะถูกใช้เพียงครั้งเดียว จำนวนรวมของการวนรอบซ้ำมีขนาดใหญ่พอที่จะใช้ค่าทั้งหมดจากรายการค่าทั้งหมด หากรายการค่าไม่ประกอบด้วยองค์ประกอบเพียงพอสำหรับแต่ละตัวแปรลูปในการวนซ้ำแต่ละครั้งจะใช้ค่าว่างสำหรับองค์ประกอบที่ขาดหายไป
หยุด และต่อ งบอาจถูกเรียกภายใน ร่างกาย , มีผลเช่นเดียวกับใน สำหรับ คำสั่ง foreach ส่งกลับสตริงที่ว่างเปล่า
ตัวอย่าง
ลูปต่อไปนี้ใช้ ผม และ J เป็นตัวแปรลูปเพื่อย้ำถึงคู่ขององค์ประกอบของรายการเดียว
เซต x {} foreach {i j} {a b c d e f} {lappend x $ j $ i} # ค่าของ x คือ "b a d c f e" # มีการวนซ้ำซ้ำ 3 ครั้ง
ลูปถัดไปใช้ ผม และ J เพื่อย้ำถึงสองรายการแบบขนาน
เซต x {} foreach i {a b c} j {d e f g} {lappend x $ i $ j} # ค่าของ x คือ "a d b e c f {} g" # มีการวนซ้ำซ้ำ 4 ครั้ง
ทั้งสองแบบจะรวมกันในตัวอย่างต่อไปนี้
เซต x {} foreach i {a b c} {j k} {d อี f g} {lappend x $ i $ j $ k} # ค่าของ x คือ "a d e b f g c {} {}" # มีการวนซ้ำ 3 ครั้งของลูป
หมายเหตุ
หลายคำสั่งที่เกี่ยวข้องทำงานด้วยแต่ละ รวมไปถึง:
- สำหรับ (n)
- ในขณะที่ (n)
- แบ่ง (n)
- ดำเนินการต่อไป (n)
เนื่องจากการกระจายลินุกซ์และระดับการเผยแพร่เคอร์เนลแตกต่างกันใช้ ชาย คำสั่ง ( % ชาย ) เพื่อดูว่าคำสั่งถูกใช้เฉพาะในคอมพิวเตอร์เครื่องใดเครื่องหนึ่งของคุณ