التكرار على القوائم والخرائط باستخدام range
أنشئ YAML متكررًا من مجموعة
التكرار على القوائم والخرائط باستخدام range درس مجاني في Helm Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Helm Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Helm Academy 4 دروس في المجموع.
كرّر دون النسخ واللصق
عندما تحتوي قيمة على قائمة، نادرًا ما تريد كتابة كل عنصر يدويًا. يكرّر إجراء range حلقةً على مجموعة ويصيّر YAML لكل عنصر.
إجراء range
تبدأ الحلقة بالصيغة {{ range SOMETHING }} وتنتهي بالصيغة {{ end }}. وتُصيّر الكتلة الواقعة بينهما مرةً واحدةً لكل عنصر في المجموعة. 🔁
{{ range .Values.hosts }}
- host: {{ . }}
{{ end }}تصبح النقطة هي العنصر
داخل range، تُعاد إسناد النقطة إلى العنصر الحالي بدلًا من الجذر. لذلك تطبع {{ . }} أي عنصر تتم معالجته في هذه الدورة.
hosts:
- api.example.com
- web.example.comالتكرار على قائمة بسيطة
عند توفير قائمة من السلاسل، يُخرج range سطر YAML واحدًا لكل قيمة. والنتيجة قائمة نظيفة ذات حجم ديناميكي تتحكم فيها القيم بالكامل.
args:
{{ range .Values.flags }}
- {{ . }}
{{ end }}الفهرس والقيمة
هل تحتاج إلى الموضع أيضًا؟ التقط كليهما باستخدام متغيرين. يمرر لك range الفهرس أولًا والقيمة ثانيًا في كل دورة.
{{ range $i, $v := .Values.ports }}
# port {{ $i }} is {{ $v }}
{{ end }}التكرار على خريطة
عند التكرار على خريطة باستخدام range، يصبح المتغيران المفتاح والقيمة. وهذا مثالي لتحويل خريطة values إلى تسميات أو متغيرات بيئية.
{{ range $key, $val := .Values.labels }}
{{ $key }}: {{ $val }}
{{ end }}تأتي مفاتيح الخريطة مرتبة
يتكرر Helm على مفاتيح الخريطة بترتيب أبجدي، لا بترتيب الإدراج. ويحافظ ذلك على ثبات المخرجات المصيّرة وسهولة مقارنتها عبر عمليات التشغيل.
الوصول إلى الجذر من الداخل
بما أن النقطة أصبحت تشير إلى العنصر، فلا يمكن الوصول إلى .Values داخل الحلقة. التقط الجذر أولًا باستخدام $ حتى تتمكن من قراءته لاحقًا.
{{ range .Values.envs }}
name: {{ $.Release.Name }}-{{ . }}
{{ end }}لا تُصيّر القوائم الفارغة شيئًا
إذا كانت المجموعة فارغة، فلن ينتج range أي مخرجات، وسيتجاوز كتلته ببساطة. عدم وجود عناصر يعني عدم وجود جسم للحلقة، وهذا هو المطلوب تمامًا.
راقب المسافة البادئة
يجب أن تصطف كل دورة أسفل المفتاح الأصل. وغالبًا ما تقترن الحلقات بالدالة المساعدة indent حتى تصل أسطر YAML المكررة إلى العمق الصحيح. 🧱
اجمع range مع if
ضمّن if داخل range لتصفية العناصر أثناء التكرار. ولا تُصيّر كتلتها إلا العناصر التي تجتاز الشرط، متجاوزًا البقية.
{{ range .Values.users }}
{{ if .active }}
- {{ .name }}
{{ end }}
{{ end }}تحقق سريع
تستخدم {{ range .Values.hosts }} للتكرار على قائمة من السلاسل.
مراجعة
يمكنك الآن التكرار باستخدام range، وقراءة العناصر عبر النقطة المعاد إسنادها، والحصول على الفهرس أو المفتاح، والوصول إلى الجذر باستخدام $. لقد أصبح التكرار تحت السيطرة! 🎯
الأسئلة الشائعة
هل درس «التكرار على القوائم والخرائط باستخدام range» مجاني؟
نعم — نص درس «التكرار على القوائم والخرائط باستخدام range» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Helm Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Helm Academy 4 دروس في المجموع.
ماذا ستتعلم في «التكرار على القوائم والخرائط باستخدام range»؟
أنشئ YAML متكررًا من مجموعة تتمرن على Helm Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Helm Academy؟
لا تُشترط خبرة سابقة. Helm Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «التكرار على القوائم والخرائط باستخدام range»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Helm Academy هذا؟
نعم. كل درس في Helm Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الكتل الشرطية باستخدام if وelse
- القيم المنطقية والعوامل في الشروط
- التكرار على القوائم والخرائط باستخدام range
- تحديد نطاق كتلة باستخدام with