العودة إلى المدونة

نظرة عامة على أنواع البيانات في Ruby

نظرة عامة على أنواع البيانات في Ruby

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

تتطلب أي برمجة إدارة أنواع مختلفة من البيانات. يصف نوع البيانات فئة معينة من البيانات. ويخبر الآلة بكيفية التعامل مع البيانات في البرنامج. تعد أنواع البيانات حاسمة لتحديد ما يمكن فعله بالبيانات (بما في ذلك العمليات التي يمكن إجراؤها). في هذا البرنامج التعليمي، سنقوم بـ التعمق في أنواع البيانات المتاحة في Ruby. سنستكشف أيضاً الكتابة الديناميكية. باستخدام هذه الميزة، يمكن لـ Ruby تحديد نوع بيانات المتغير تلقائياً دون الإعلان عنه صراحةً. فلنبدأ!

المتطلبات الأساسية

لممارسة وتطبيق الخطوات الموضحة في هذا الدليل، ستحتاج إلى المكونات التالية:

أنواع البيانات في Ruby

تتميز Ruby بجميع أنواع البيانات الشائعة التي ستواجهها في أي لغة برمجة: الأعداد الصحيحة، والأعداد العشرية، والسلاسل النصية، والمصفوفات، والرموز، والهاش، وما إلى ذلك. بعد ذلك، سنقدم نظرة عامة على كيفية العمل مع أنواع البيانات المختلفة في Ruby.

الخطوة 1 – الأعداد الصحيحة

على غرار الرياضيات، الأعداد الصحيحة في برمجة الكمبيوتر هي أعداد كاملة. يمكن أن تكون القيمة موجبة أو سالبة أو 0. نطاق القيم هو كما يلي:

حان الوقت لتجربة الأعداد الصحيحة في Ruby. المثال الأول هو طباعة عدد صحيح بسيط على الشاشة:

Data Types in Ruby 1

بعد ذلك، سنعمل مع متغير عدد صحيح. هنا، المتغير sample_int يحتوي على قيمة عدد صحيح (99) ووظيفة print تطبع قيمة المتغير على الشاشة:

Data Types in Ruby 2

يمكننا أيضاً إجراء عمليات حسابية باستخدام الأعداد الصحيحة. يوضح المثال التالي عملية جمع بسيطة لعددين صحيحين:

عندما نعمل مع أرقام كبيرة، غالباً ما نستخدم الفواصل (,) لتسهيل قراءتها. على سبيل المثال، يُكتب المليون (1000000) كـ 1,000,000 لتحسين القراءة. في حين أن استخدام الفواصل محظور، فإن Ruby تسمح باستخدام الشرطات السفلية ( _) كمحدد. ألقِ نظرة على المثال التالي:

Data Types in Ruby 3

يؤدي استخدام الشرطات السفلية إلى تحسين قابلية قراءة الكود، خاصة عند التعامل مع قيم الأعداد الصحيحة الكبيرة.

الخطوة 2 – الأعداد العشرية

يمثل العدد العشري (أو float باختصار) عدداً حقيقياً. على غرار التعريف الرياضي، يمكن أن تكون الأعداد الحقيقية نسبية أو غير نسبية. في Ruby، العدد العشري هو في الأساس رقم يحتوي على علامة عشرية.

فلنحاول طباعة قيمة عشرية على الشاشة:

يوضح المثال التالي الإعلان عن متغير عشري:

يمكننا أيضاً إجراء عمليات حسابية مختلفة على القيم والمتغيرات العشرية. يوضح المثال التالي عملية جمع بسيطة لعددين عشريين:

ماذا لو أضفنا عدداً عشرياً وعدداً صحيحاً؟ ستكون القيمة الناتجة عشرية. في المثال التالي، على الرغم من أن 55.0 هو عدد كامل، إلا أنه يُعامل كعدد عشري:

الخطوة 3 – القيم المنطقية

القيم المنطقية تمثل قيم الحقيقة لفرع المنطق في الرياضيات. في Ruby، يتم تمثيل أنواع البيانات المنطقية بقيمتين: true و false:

  • أكبر من

    • 100 > 99: true

    • 99 > 100: false

  • أصغر من

    • 500 < 999: true

    • 999 < 500: false

  • يساوي

    • 10 == 10: true

    • 9 == 99: false

على غرار الأرقام، يمكننا أيضاً تخزين true أو false قيمة في متغير. يوضح المثال التالي هذه الميزة:

الخطوة 4 – السلاسل النصية

في البرمجة، يتم تمثيل السلسلة النصية كمجموعة متتالية من الأحرف (الحروف والأرقام والرموز). في لغة Ruby، توجد السلاسل النصية داخل علامات اقتباس مفردة ( ') أو علامات اقتباس مزدوجة ( "). لقد قمنا بالفعل بـ تغطية استخدام السلاسل النصية في Ruby بالتفصيل، لذا سيكون هذا القسم قصيرًا.

المثال التالي هو برنامج hello world بسيط في Ruby:

يمكننا أيضاً تخزين السلاسل النصية في متغيرات. يتضمن المثال التالي أيضاً دمج السلاسل النصية:

Data Types in Ruby 4

الخطوة 5 – المصفوفات

المصفوفة هي بنية بيانات يمكنها تخزين مجموعة ذات حجم ثابت من العناصر من نفس نوع البيانات. ويمكن تصورها أيضاً كمجموعة من المتغيرات من نفس نوع البيانات. إنها واحدة من أكثر بنيات البيانات أساسية في معظم لغات البرمجة الحديثة.

في لغة Ruby، يتم تعريف المصفوفة على النحو التالي:

من الممكن إنشاء مصفوفة من أي أنواع بيانات أخرى ناقشناها حتى الآن (أعداد صحيحة، أعداد عشرية، وسلاسل نصية). إليك بعض الأمثلة:

  • أعداد صحيحة: [-5, 0, 5]

  • أعداد عشرية: [-9.99, -6.99, -3.99, 0, 3.99]

  • سلاسل نصية: [“the”, “quick”, “brown”, “fox”]

يطبق المثال التالي كل هذه الأنواع من المصفوفات:

Data Types in Ruby 5

لاحظ أنه عندما تواجه دالة الطباعة (print) مصفوفة، فإنها تطبع المصفوفة بأكملها على الشاشة. لمزيد من السهولة، ستتعامل غالباً مع المصفوفات كمتغيرات. لنقم بتحديث الكود:

Data Types in Ruby 6

Data Types in Ruby 7

الآن، يمكننا العمل مع العناصر الفردية للمصفوفات:

Data Types in Ruby 7

لاحظ أنه في لغة Ruby، يبدأ فهرس المصفوفات بـ 0.

للتسهيل، تأتي المصفوفات في Ruby مع التابعين .first و .last اللذين يطبعان العنصرين الأول والأخير:

Data Types in Ruby 8

في لغة Ruby، تتمتع المصفوفات بميزة أخرى مثيرة للاهتمام. حيث يمكنها الاحتفاظ بأنواع مختلفة من البيانات في نفس الوقت. على سبيل المثال، يمكنك تخزين سلاسل نصية، ورموز (symbols)، وحتى مصفوفات أخرى:

Data Types in Ruby 9

الخطوة 6 – الرموز

في لغة Ruby، الـ رمز هو نوع بيانات خاص يعمل كعلامة أو معرف. الرموز غير قابلة للتغيير، مما يعني أنه لا يمكن تغييرها. تظهر الرموز كما لو كانت تعلن عن متغيرات بدون أي قيمة.

إليك مثال على الرمز:

بشكل عام، تُستخدم الرموز لتحديد شيء مهم. ومع ذلك، في الحالات الأخرى، تكون السلاسل النصية كافية وزيادة.

تتعامل لغة Ruby، لكونها لغة كائنية التوجه، مع كل شيء ككائن (بما في ذلك السلاسل النصية) بموقع ذاكرة فريد خاص به، حتى لو كانت السلاسل النصية متطابقة. ومع ذلك، عندما تشير إلى رمز، فإنه يكون نفس الكائن في كل مكان في البرنامج، ونفس موقع الذاكرة.

الخطوة 7 – جداول التجزئة (Hashes)

جدول التجزئة (hash) هو مجموعة تشبه القاموس من المفاتيح والقيم. غالبًا ما تُستخدم جداول التجزئة لتخزين البيانات ذات الصلة، على سبيل المثال، معلومات حول مستخدم.

إليك مثال سريع على جدول التجزئة. لقد أنشأنا جدول تجزئة user_info يحتوي على اسم المستخدم وكلمة المرور للمستخدم:

Data Types in Ruby hashing in ruby

لاسترداد قيم زوج المفتاح والقيمة، يجب علينا استخدام المفتاح. يوضح المثال التالي هذه العملية:

Data Types in Ruby retrieve value using key

تسمح Ruby أيضًا بتعريف جدول التجزئة باستخدام صيغ مختلفة قليلاً ( : بدلاً من =>):

Data Types in Ruby retrieving value using key

بنية الصيغة هذه مشابهة للصيغة المستخدمة في لغات أخرى، على سبيل المثال، JavaScript. في بنية الصيغة هذه، يتم تعريف المفاتيح كرموز. لهذا السبب بدلاً من استخدام "username"، فإننا نستخدم: username للوصول إلى القيمة.

الكتابة الديناميكية (Dynamic Typing)

ربما لاحظت بالفعل أنه عند الإعلان عن متغير، لا يتعين علينا تعيين نوع بيانات بشكل صريح. بدلاً من ذلك، تحدد قيمة المتغير نوع البيانات. تستخدم Ruby الكتابة الديناميكية (dynamic typing) حيث يتم التحقق من النوع في وقت التشغيل. في المقابل، يتم تحديد أنواع البيانات أثناء الترجمة في لغات البرمجة ذات الكتابة الاستاتيكية (static typing) (مثل C/C++، على سبيل المثال).

في المثال التالي، جميع القيم المسندة إلى المتغير dyn_var صالحة:

في اللغات ذات الكتابة الديناميكية، نحن أحرار في إعادة استخدام متغير موجود لتخزين أنواع بيانات مختلفة. هنا، تم تحديث المثال السابق لتوضيح هذه الظاهرة:

dynamically typed variables

كما يوضح هذا المثال، في كل مرة يتم فيها تعيين قيمة جديدة، يتغير نوع بيانات dyn_var أثناء التشغيل. هذا مفيد عند تحويل نوع بيانات إلى آخر. يوضح المثال التالي ذلك:

get input and cast

هنا،

  • نظرًا لأن مدخلات لوحة المفاتيح هي سلاسل نصية، فإن length تكون سلسلة نصية في البداية.

  • بما أن القيمة المطلوبة هي عدد عشري (float)، فإننا نقوم بتحويل قيمة السلسلة النصية إلى عدد عشري باستخدام دالة to_f .

  • بسبب تغيير القيمة، يتم تعيين نوع البيانات العشري (float) لـ length. هذا هو ما نراه عند طباعة قيمته على الشاشة.

ماذا سيحدث إذا حاولنا خلط نوعين مختلفين من البيانات معًا؟ ستعرض Ruby خطأً. ألقِ نظرة:

mixing two datatypes

تحديد نوع البيانات

في Ruby، يتم التعامل مع كل شيء ككائن. كل كائن في Ruby يأتي مع الطريقة class. عند استدعائها، تخبرنا هذه الطريقة بنوع البيانات الخاص بالمصدر. إليك بعض الأمثلة على استخدام class طريقة:

get classes name

طريقة أخرى لمعرفة نوع البيانات هي استخدام kind_of? طريقة. تقوم بالتحقق من نوع بيانات الكائن مقابل نوع البيانات المطلوب وتُرجع قيمة منطقية. تحقق من ذلك في المثال التالي:

check datatype

وبالمثل، هناك طريقة أخرى is_a? تقارن نوع البيانات وتُرجع قيمة منطقية. الفرق الوحيد هو تسمية الطريقة. ومع ذلك، قد تكون مفضلة لأنها أسهل قليلاً على المطورين لقراءتها وفهمها. قم بتحديث المثال السابق بـ is_a?:

check datatype

أفكار نهائية

يتطلب العمل مع أي لغة برمجة فهمًا جيدًا لأنواع البيانات التي تدعمها. في هذا الدليل، استكشفنا أنواع البيانات الأكثر شيوعًا المستخدمة في برمجة Ruby. لقد ناقشنا وعرضنا الأعداد الصحيحة، والأعداد العشرية، والسلاسل النصية، والرموز، والقيم المنطقية، وجداول الهاش (مع أمثلة).

ألقِ نظرة على المزيد من البرامج التعليمية من مدونتنا والتي ستساعدك على استكشاف Ruby:

حوسبة سعيدة!

author

Preslav Dobrev

المؤلف · CloudSigma

Preslav Dobrev هو مصمم إبداعي في CloudSigma، يركز على هوية أعمال متسقة باستخدام قنوات التسويق التقليدية والمبتكرة. هو بارع في دمج الرؤية الفنية مع التسويق الاستراتيجي لخلق سرد قصصي مؤثر للعلامة التجارية.

التعليقات

لا توجد تعليقات بعد. كن أول من يعلق.