عند البرمجة ، وforeach يقوم الأمر بتنفيذ حلقة حيث تفترض متغيرات الحلقة القيم من قائمة أو أكثر. في أبسط الحالات هناك متغير حلقة واحدة ، VARNAME ، وقائمة واحدة ، قائمة ، هذه هي قائمة من القيم لتعيين ل VARNAME . ال الجسم الحجة هي برنامج نصي Tcl. لكل عنصر من عناصر قائمة (بالترتيب من الأول إلى الأخير) ،foreach يعين محتويات العنصر ل VARNAME كما لو كانLINDEXتم استخدام الأمر لاستخراج العنصر ، ثم استدعاء مترجم Tcl للتنفيذ الجسم .
ملخص
foreach هيئة قائمة varname
foreach varlist1 list1 ? varlist2 list2 … ? الجسم
نقاش
في الحالة العامة ، يمكن أن يكون هناك أكثر من قائمة قيم واحدة (على سبيل المثال ، list1 و list2 ) ، ويمكن ربط كل قائمة قيم بقائمة متغيرات الحلقة (على سبيل المثال ، varlist1 و varlist2 ). خلال كل تكرار للحلقة ، ومتغيرات كل منهما varlist يتم تعيين قيم متتالية من المقابلة قائمة . القيم في كل منها قائمة يتم استخدامها بالترتيب من الأول إلى الأخير ، ويتم استخدام كل قيمة مرة واحدة بالضبط. إجمالي عدد مرات تكرار الحلقة كبير بما يكفي لاستخدام جميع القيم من جميع قوائم القيم. إذا كانت قائمة القيم لا تحتوي على عناصر كافية لكل متغير من متغيراتها في كل تكرار ، يتم استخدام القيم الفارغة للعناصر المفقودة.
الاستراحة واستمر قد يتم استدعاء البيانات داخل الجسم ، مع نفس التأثير كما في إلى عن على أمر. وoreach بإرجاع سلسلة فارغة.
أمثلة
تستخدم الحلقة التالية أنا و ي كمتغيرات حلقة لتكرار أكثر من أزواج من عناصر قائمة واحدة.
set x {} foreach {i j} {a b c d e f} {lappend x $ j $ i} # قيمة x هي "b a d c f e" # هناك 3 تكرار للحلقة.
الحلقة القادمة تستخدم أنا و ي لتكرار أكثر من قائمتين بالتوازي.
set x {} foreach i {a b c} j {d e f g} {lappend x $ i $ j} # قيمة x هي "a d b e c f {} g" # هناك 4 تكرار للحلقة.
يتم الجمع بين النموذجين في المثال التالي.
set x {} foreach i {a b c} {j k} {d e f g} {lappend x $ i $ j $ k} # The value of x is a a d e b f g c {} {} "# There are 3 iterations of the loop.
ملاحظات
تعمل العديد من الأوامر ذات الصلةforeach بما فيها:
- (ن)
- في حين (ن)
- انقطاع (ن)
- مواصلة (ن)
نظرًا لتفاوت مستويات توزيع نواة لينكس ونطاقها ، استخدم رجل أمر ( رجل٪ ) لمعرفة كيفية استخدام أمر معين على جهاز الكمبيوتر الخاص بك على وجه التحديد.