0Pricing
Helm Academy · درس

دمج عميق باستخدام mergeOverwrite وdict

أنشئ قيمًا منظّمة برمجيًا

دمج عميق باستخدام mergeOverwrite وdict درس مجاني في Helm Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Helm Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Helm Academy 4 دروس في المجموع.

إنشاء maps داخل القوالب

تحتاجون أحيانًا إلى تجميع map داخل قالب. تنشئ الدالة dict واحدةً من أزواج متناوبة من المفاتيح والقيم.

{{ $cfg := dict "level" "info" "json" true }}

لماذا تدمجون maps

غالبًا ما تكون لديكم قيم افتراضية لـ chart بالإضافة إلى تجاوزات المستخدم، وتريدون map واحدة مدمجة. وهذا بالضبط ما ينتجه merge.

الدمج السطحي

تنسخ الدالة merge المفاتيح من maps المصدر إلى وجهة، لكنها تُبقي قيمة الوجهة كلما كان المفتاح موجودًا مسبقًا.

{{ $out := merge $user $defaults }}

يعطي merge الأولوية للوجهة

مع merge، يفوز الوسيط الأول عند وجود أي مفتاح متعارض، ولذلك تكون الدالة مناسبة عندما يجب أن تتجاوز مدخلات المستخدم القيم الافتراضية لديكم.

تعرّفوا إلى mergeOverwrite

تفعل الدالة mergeOverwrite العكس: إذ تستبدل maps المصدر اللاحقة قيم الوجهة، فتضيف القيم على شكل طبقات.

{{ $out := mergeOverwrite $defaults $user }}

عميق وليس سطحيًا

تدمج كلتا الدالتين المساعدتين بشكل recursive: إذ تُدمج maps المتداخلة مفتاحًا بمفتاح بدلًا من استبدال الشجرة الفرعية بأكملها.

تحذير بشأن التعديل

انتبهوا: تعدّل merge وmergeOverwrite الوسيط الأول لهما مباشرةً. مرّروا dict جديدة إذا كان يجب الحفاظ على الأصل دون تغيير.

{{ $base := dict }}{{ $r := mergeOverwrite $base .Values.extra }}

نمط تراكب القيم الافتراضية

من الأنماط الشائعة البدء بـ dict للقيم الافتراضية، ثم إضافة قيم المستخدم فوقها حتى تعود المفاتيح غير المعيّنة إلى قيم آمنة افتراضيًا.

{{ $merged := mergeOverwrite (dict "port" 80) .Values.service }}

قراءة القيم المدمجة

بعد الدمج، تتعاملون مع النتيجة مثل أي map، وتستخرجون المفاتيح باستخدام dot أو دالة index كالمعتاد.

{{ $merged.port }}

تسلسل النتيجة

لإخراج بنية مدمجة بصيغة YAML، مرّروها عبر toYaml وnindent حتى توضع الكتلة عند مستوى المسافة البادئة الصحيح.

{{ toYaml $merged | nindent 4 }}

استخراج مفتاح واحد

عندما يكون اسم المفتاح ديناميكيًا أو يتضمن أحرفًا غير اعتيادية، استخدموا دالة index للوصول إلى map بدلًا من الوصول باستخدام dot.

{{ index $merged "log-level" }}

تحقّق سريع

تحقّق سريع من اتجاه الكتابة فوق القيم.

مراجعة

تعرّفتم إلى dict لإنشاء maps، وإلى merge للحفاظ على مفاتيح الوجهة، وإلى mergeOverwrite لمنح القيم اللاحقة الأولوية، مع إجراء كل عمليات الدمج بعمق. 🎉

الأسئلة الشائعة

هل درس «دمج عميق باستخدام mergeOverwrite وdict» مجاني؟

نعم — نص درس «دمج عميق باستخدام mergeOverwrite وdict» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Helm Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Helm Academy 4 دروس في المجموع.

ماذا ستتعلم في «دمج عميق باستخدام mergeOverwrite وdict»؟

أنشئ قيمًا منظّمة برمجيًا تتمرن على Helm Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Helm Academy؟

لا تُشترط خبرة سابقة. Helm Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «دمج عميق باستخدام mergeOverwrite وdict»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Helm Academy هذا؟

نعم. كل درس في Helm Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. دمج عميق باستخدام mergeOverwrite وdict
  2. tpl: تصيير السلاسل من القيم
  3. التكرار على الملفات باستخدام range مع .Files.Glob
  4. حارس fail وعمليات التحقق المخصصة
← العودة إلى Helm Academy