تحويل أنواع البيانات
في هذا الدرس، سنتعلم كيفية تحويل البيانات من نوع إلى آخر في روبي. هذه مهارة أساسية، خاصة عند التعامل مع إدخال المستخدم.
لماذا نحتاج تحويل الأنواع؟
تذكر من الدرس السابق أن gets يُرجع دائماً نصاً (String)، حتى لو أدخل المستخدم رقماً:
لذلك نحتاج تحويل النص إلى رقم قبل إجراء العمليات الحسابية عليه.
دوال التحويل الأساسية
1. تحويل إلى عدد صحيح: to_i
دالة to_i (to integer) تحوّل القيمة إلى عدد صحيح:
سلوك خاص مع النصوص:
2. تحويل إلى عدد عشري: to_f
دالة to_f (to float) تحوّل القيمة إلى عدد عشري:
3. تحويل إلى نص: to_s
دالة to_s (to string) تحوّل القيمة إلى نص:
4. تحويل إلى مصفوفة: to_a
دالة to_a (to array) تحوّل القيمة إلى مصفوفة:
جدول ملخص دوال التحويل
| الدالة | الوصف | مثال | الناتج |
|---|---|---|---|
to_i | تحويل إلى عدد صحيح | "42".to_i | 42 |
to_f | تحويل إلى عدد عشري | "3.14".to_f | 3.14 |
to_s | تحويل إلى نص | 42.to_s | "42" |
to_a | تحويل إلى مصفوفة | (1..3).to_a | [1, 2, 3] |
استخدام التحويل مع إدخال المستخدم
مثال 1: حساب العمر
مثال 2: حساب المساحة
مثال 3: جمع رقمين
تحويل متسلسل
يمكنك ربط عدة تحويلات معاً:
التحقق من صلاحية التحويل
بما أن to_i تُرجع صفراً للنصوص غير الرقمية، يمكنك التحقق من الإدخال:
طريقة أفضل باستخدام التعبيرات النمطية:
دوال تحويل إضافية
Integer() و Float() - تحويل صارم
هذه الدوال ترفع خطأ إذا كان التحويل غير ممكن:
to_sym - تحويل إلى رمز
أخطاء شائعة
1. نسيان التحويل قبل الحساب
2. استخدام التحويل الخاطئ
3. الخلط بين + للجمع والدمج
مثال شامل: حاسبة بسيطة
نصائح مهمة
- استخدم دائماً التحويل المناسب:
to_iللأعداد الصحيحة،to_fللأعداد العشرية - تذكر أن gets تُرجع نصاً دائماً: حتى لو أدخل المستخدم أرقاماً
to_iلا تُنشئ خطأ: النصوص غير الرقمية تصبح صفراً - تحقق من الإدخال إذا لزم الأمر- استخدم
Integer()أوFloat()للتحويل الصارم: عندما تريد التأكد من صحة الإدخال - سلسلة التحويلات: يمكنك ربط
chomp.strip.to_iفي سطر واحد
التمرين
اكتب برنامجاً يطلب من المستخدم إدخال رقمين ثم يحسب ويطبع مجموعهما والفرق بينهما.
ملاحظة: استخدم حقل الإدخال المحاكى لإدخال الرقمين (كل رقم في سطر منفصل).
الناتج المتوقع: