Ruby Programming

إتقان استرجاع قيمة الهاش في روبي باستخدام دالة fetch()

Spread the love

محتويات الجدول

فهم قواميس Ruby

في Ruby، القاموس (Hash) هو بنية بيانات قوية تخزن البيانات في أزواج مفتاح-قيمة. فكر فيه كقاموس: كل مفتاح يحدد قيمة بشكل فريد. يتم تعريف القواميس باستخدام الأقواس المتعرجة {}، مع فصل المفاتيح والقيم بفاصلة نقطتين =>. يمكن أن تكون المفاتيح سلاسل نصية، أو رموزًا، أو أي كائن آخر يستجيب إلى hash و eql?.


my_hash = { "name" => "Alice", :age => 30, "city" => "New York" }

في هذا المثال، "name"، :age، و "city" هي المفاتيح، و "Alice"، 30، و "New York" هي القيم المقابلة لها.

الوصول إلى قيم القاموس: [] مقابل fetch()

هناك عدة طرق للوصول إلى القيم في قاموس Ruby. الطريقة الأكثر شيوعًا هي استخدام الأقواس المربعة []:


name = my_hash["name"]  # name ستكون "Alice"
age = my_hash[:age]     # age ستكون 30

ومع ذلك، فإن هذا النهج له عيب: إذا لم يكن المفتاح موجودًا، فإنه يُرجع nil، والذي قد يؤدي أحيانًا إلى سلوك غير متوقع. توفر طريقة fetch() بديلاً أكثر قوة.

تأخذ fetch() المفتاح كوسيطة، وتُرجع القيمة المقابلة. إذا كان المفتاح مفقودًا، فإنها تثير استثناء KeyError، مما يوضح بوضوح وجود خطأ ما.


name = my_hash.fetch("name")  # name ستكون "Alice"
# my_hash.fetch("country") # هذا سيُثير استثناء KeyError

معالجة المفاتيح المفقودة بلطف

تكمن القوة الحقيقية لـ fetch() في قدرتها على معالجة المفاتيح المفقودة دون تعطل البرنامج. يمكنك تقديم قيمة افتراضية كوسيطة ثانية:


country = my_hash.fetch("country", "Unknown")  # country ستكون "Unknown"

بدلاً من ذلك، يمكنك استخدام كتلة لتعريف القيمة الافتراضية. هذا مفيد في السيناريوهات الأكثر تعقيدًا:


country_code = my_hash.fetch("country_code") { |key|  "Default for #{key}" }

تستقبل الكتلة المفتاح المفقود كوسيطة، مما يسمح بإنشاء قيمة افتراضية ديناميكية.

تقنيات fetch() المتقدمة

توفر fetch() المزيد من المرونة. على سبيل المثال، يمكنك تقديم كتلة تعالج الاستثناء وتنفذ منطقًا مخصصًا:


begin
  value = my_hash.fetch("zip_code")
rescue KeyError => e
  puts "Key not found: #{e.message}"
  # قم بأداء بعض الإجراءات المخصصة، مثل تسجيل الخطأ أو استخدام قيمة بديلة.
end

هذا يسمح بمعالجة دقيقة للخطأ ويمنع إنهاء البرنامج المفاجئ بسبب المفاتيح المفقودة.

الخلاصة

تُعد طريقة fetch() خيارًا أفضل للوصول إلى قيم القاموس مقارنة بطريقة [] القياسية لأنها توفر معالجة صريحة للخطأ وتسمح بالإدارة اللطيفة للمفاتيح المفقودة. إن إتقان fetch() يحسن بشكل كبير من قوة ومتانة ووضوح شفرة Ruby الخاصة بك.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *