محتويات الجدول
ما الفرق بين %i
و %I
في روبي؟
في روبي، كلا من %i
و %I
هما مُحرفات مصفوفة تُستخدم لإنشاء مصفوفات من الرموز. الرموز هي أجسام خفيفة الوزن، ثابتة، تُستخدم بشكل متكرر كمفاتيح هاش أو مُعرفات. يكمن الاختلاف الرئيسي في كيفية تعاملهما مع الأحرف الكبيرة:
%i
: يعامل جميع المدخلات كحروف صغيرة. تُفسر الأحرف الكبيرة داخل الأقواس حرفيًا كسلاسل، ثم تُحوّل إلى رموز. قد يؤدي هذا إلى نتائج غير متوقعة إذا كنت تنوي الحفاظ على الأحرف الكبيرة.%I
: يحافظ على الأحرف الكبيرة. تُفسر الأحرف الكبيرة والصغيرة بشكل صحيح كرموز، مع الحفاظ على الحروف الأصلية.
فيما يلي مثال يوضح الفرق:
lowercase_symbols = %i[one Two three]
puts lowercase_symbols # => [:one, :"Two", :three] # ملاحظة: "Two" هو رمز سلسلة
uppercase_symbols = %I[one Two three]
puts uppercase_symbols # => [:one, :Two, :three] # جميعها رموز
متى نستخدم %i
مقابل %I
؟
يعتمد الاختيار بين %i
و %I
على احتياجاتك:
- استخدم
%i
عندما تكون حساسية الحالة غير ذات صلة برموزك وتريد طريقة موجزة لإنشاء مصفوفات من الرموز الصغيرة. غالبًا ما يحسّن هذا من القابلية للقراءة. - استخدم
%I
عندما تكون حساسية الحالة مهمة (مثل تمثيل الثوابت أو القوائم حيث أن:CONSTANT
يختلف عن:constant
). هذا يضمن تمثيل أحرف رموزك بدقة.
أفضل الممارسات
- الاتساق: اختر مُحرفًا واحدًا والتمسك به ضمن مشروع معين لتجنب الارتباك.
- القابلية للقراءة: بالنسبة للقوائم الطويلة، قسّمها إلى مصفوفات أصغر وأكثر قابلية للإدارة.
- اتفاقيات التسمية: استخدم الشرطة السفلية (مثل
%i[first_name last_name]
) للرموز متعددة الكلمات لتعزيز القابلية للقراءة. - تجنب الغموض: إذا لم تكن متأكدًا من الأحرف الكبيرة، فإن
%I
يكون بشكل عام أكثر أمانًا.
الأسئلة الشائعة
- هل يمكنني استخدام أنواع بيانات أخرى غير السلاسل؟ لا، يتم دائمًا تفسير المدخل كسلاسل، ثم تحويلها إلى رموز.
- ماذا يحدث إذا استخدمت رمزًا مباشرة؟ يتم التعامل معه كسلسلة، مما قد يغيّر أحرف الرمز الناتج.
- هل يوجد فرق في الأداء؟ فرق الأداء بين هذه المُحرفات وإنشاء المصفوفات يدويًا ضئيل.