القيم الافتراضية والدمج
fetch وmerge وdig
القيم الافتراضية والدمج درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.
مشكلة nil
تعيد قراءة مفتاح مفقود القيمة nil، مما قد يسبب نتائج غير متوقعة في العمليات الحسابية أو المنطقية. يوفر Ruby طرقًا أكثر أمانًا للتعامل مع غياب القيم.
h = { a: 1 }
puts h[:b].inspectالوصول الآمن باستخدام fetch
تعيد fetch القيمة، أو ترفع خطأً واضحًا إذا كان المفتاح مفقودًا. استخدموها عندما يكون المفتاح مطلوبًا.
h = { name: "Ada" }
puts h.fetch(:name)استخدام قيمة افتراضية مع fetch
مرّروا إلى fetch وسيطة ثانية بوصفها قيمة احتياطية لا تُستخدم إلا عند غياب المفتاح.
h = { name: "Ada" }
puts h.fetch(:age, 0)
puts h.fetch(:name, "Unknown")استخدام كتلة مع fetch
مرّروا كتلة لحساب القيمة الاحتياطية عند الحاجة فقط. ولا تُشغَّل الكتلة إلا عند عدم العثور على المفتاح.
h = {}
puts h.fetch(:x) { "computed default" }هاش بقيمة افتراضية
تعيد Hash.new(default) القيمة الافتراضية لأي مفتاح مفقود بدلًا من nil. وتكون القيمة الافتراضية مشتركة، لذا يُفضَّل استخدامها مع القيم البسيطة غير القابلة للتغيير.
counts = Hash.new(0)
counts[:a] += 1
counts[:a] += 1
puts counts[:a]
puts counts[:b]قيمة افتراضية باستخدام كتلة
تحسب Hash.new { |hash, key| ... } قيمة افتراضية جديدة لكل مفتاح، وهي مثالية لتجميع العناصر في مصفوفات.
groups = Hash.new { |h, k| h[k] = [] }
groups[:fruit] << "apple"
groups[:fruit] << "pear"
puts groups[:fruit].inspectالعدّ باستخدام القيم الافتراضية
تجعل القيمة الافتراضية 0 عملية عدّ الكلمات بسيطة وواضحة.
words = ["a", "b", "a", "a"]
count = Hash.new(0)
words.each { |w| count[w] += 1 }
puts countدمج الهاشات
تجمع merge هاشين في هاش جديد. وتكون الأولوية لمفاتيح الهاش الثاني عند حدوث تعارض.
defaults = { color: "red", size: "M" }
user = { color: "blue" }
puts defaults.merge(user)الدمج باستخدام كتلة
مرّروا كتلة إلى merge لحل التعارضات، مثلًا بجمع القيم معًا.
a = { x: 1, y: 2 }
b = { y: 3, z: 4 }
puts a.merge(b) { |key, old, new| old + new }الوصول الآمن إلى الهاشات المتداخلة باستخدام dig
تقرأ dig البيانات عبر الهاشات المتداخلة بأمان، وتعيد nil إذا كان أي مستوى مفقودًا بدلًا من التسبب في انهيار البرنامج.
data = { user: { address: { city: "London" } } }
puts data.dig(:user, :address, :city)
puts data.dig(:user, :phone, :home).inspectدمج الأدوات
استخدموا القيم الافتراضية والدمج معًا لإنشاء إعدادات من قيم أساسية مع تجاوزات.
base = { retries: 3, timeout: 30 }
options = base.merge(timeout: 60)
puts options.fetch(:timeout)فحص سريع
اختبروا معرفتكم بالقيم الافتراضية والدمج.
مراجعة
يمكنكم الآن التعامل مع البيانات المفقودة بسلاسة:
- استخدام
fetchمع قيمة افتراضية أو كتلة أو خطأ صارم - استخدام
Hash.new(0)والقيم الافتراضية المعتمدة على الكتل للعدّ والتجميع - استخدام
mergeمع كتل لحل التعارضات - استخدام
digللوصول الآمن إلى البيانات المتداخلة
المقرر التالي: النطاقات وEnumerable.
c = Hash.new(0)
c[:hits] += 1
puts c[:hits]الأسئلة الشائعة
هل درس «القيم الافتراضية والدمج» مجاني؟
نعم — نص درس «القيم الافتراضية والدمج» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ماذا ستتعلم في «القيم الافتراضية والدمج»؟
fetch وmerge وdig تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟
لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «القيم الافتراضية والدمج»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟
نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Symbols مقابل Strings
- إنشاء Hashes وقراءتها
- التكرار على Hash
- القيم الافتراضية والدمج