أنواع البيانات Data Types في لغة روبي (Ruby)
تُعد لغة روبي (Ruby) واحدة من أبرز لغات البرمجة الموجهة للكائنات (Object-Oriented) والتي تتميز بسهولة التعلم ومرونة التكويد ووضوح البنية اللغوية. ظهرت لأول مرة في منتصف التسعينات على يد المبرمج الياباني يوكيهيرو ماتسوموتو (Yukihiro Matsumoto)، وقد صُممت روبي لتكون لغة موجهة للمطورين تتيح لهم التعبير عن أفكارهم بأسلوب برمجي أنيق وسلس دون تعقيد. من بين أهم الركائز التي تقوم عليها أي لغة برمجة هي أنواع البيانات أو ما يُعرف بـ Data Types، وهي التي تحدد طبيعة القيم التي يمكن تخزينها في المتغيرات ومعالجتها في البرنامج.
في روبي، كل شيء هو كائن (Object)، مما يجعل مفهوم أنواع البيانات مختلفاً إلى حد ما عن اللغات الأخرى التقليدية مثل C أو Java. فجميع القيم في روبي – بما في ذلك الأعداد والنصوص والقيم المنطقية – هي كائنات (Objects) تنتمي إلى فئات (Classes) محددة، وتحتوي على خصائص وطرق يمكن استخدامها عليها.
يتناول هذا المقال بصورة مفصلة وموسعة أنواع البيانات المختلفة في لغة روبي، مع شرح وافٍ لطبيعتها ووظائفها وخصائصها والطرق المرتبطة بها.
1. الأعداد الصحيحة (Integer)
تمثل فئة Integer الأعداد الصحيحة في روبي، وهي الأعداد التي لا تحتوي على فاصلة عشرية. على عكس العديد من لغات البرمجة التي تميز بين أنواع متعددة من الأعداد الصحيحة حسب الحجم (مثل short, int, long)، فإن روبي تقوم بإدارة الأعداد الصحيحة تلقائيًا باستخدام الفئتين Fixnum وBignum، حيث كانت Fixnum تُستخدم للأعداد الصغيرة وBignum للأعداد الكبيرة جداً، ولكن ابتداءً من روبي 2.4، تم دمجهما في فئة واحدة تُعرف ببساطة بـ Integer.
الخصائص:
-
يمكن إجراء عمليات حسابية مباشرة باستخدام رموز مثل
+,-,*,/,%. -
تدعم لغة روبي طريقة التمثيل الرقمي باستخدام أنظمة عددية مختلفة مثل الثنائي والثماني والسادس عشري.
مثال:
rubya = 10
b = 3
puts a + b # 13
puts a % b # 1
2. الأعداد العشرية (Float)
تمثل فئة Float الأعداد التي تحتوي على جزء عشري، وتُستخدم عند الحاجة إلى تمثيل قيم غير صحيحة مثل 3.14 أو 2.718.
الخصائص:
-
تُستخدم للعمليات الرياضية التي تتطلب دقة أكبر.
-
تدعم العمليات نفسها التي تدعمها الأعداد الصحيحة.
مثال:
rubyx = 5.75
y = 2.0
puts x / y # 2.875
3. القيم المنطقية (Boolean)
تشمل القيم المنطقية نوعين فقط من القيم وهما: true و false. وهما من الكائنات في روبي وينتميان إلى الكلاس TrueClass و FalseClass على التوالي. تُستخدم القيم المنطقية في التحقق من الشروط وتقييم العبارات المنطقية.
الخصائص:
-
تُستخدم في البنى الشرطية مثل if و unless.
-
تُستخدم مع العوامل المنطقية مثل
&&,||,!.
مثال:
rubyx = true
y = false
puts x && y # false
puts x || y # true
4. النصوص (Strings)
تمثل فئة String مجموعة من الأحرف، وتُستخدم لتخزين ومعالجة النصوص. يتم إنشاء السلاسل النصية باستخدام علامات اقتباس مفردة ' أو مزدوجة ".
الخصائص:
-
تحتوي على عدد هائل من الدوال مثل
length,upcase,downcase,gsub,strip. -
يمكن استخدام التعبيرات داخل النصوص باستخدام علامات الاقتباس المزدوجة مع الـ
#{}.
مثال:
rubyname = "روبي"
puts "أهلاً بك في لغة #{name}"
puts name.upcase # "روبي" => "روبي" (بدون تغيير الأحرف لأن اللغة عربية)
5. الرموز (Symbols)
تُعد الرموز أو Symbols من أنواع البيانات المميزة في روبي، وهي تمثل كائنات غير قابلة للتغيير تُستخدم كمفاتيح في القواميس (Hashes) أو كمُعرفات فريدة. تُكتب باستخدام النقطتين : متبوعة بالاسم.
الخصائص:
-
أسرع في المقارنة من السلاسل النصية.
-
لا تتغير بمجرد إنشائها (Immutable).
مثال:
rubylanguage = :ruby
puts language.class # Symbol
6. القيم الفارغة (Nil)
في روبي، تمثل nil غياب القيمة أو اللاشيء. وتُعد كائناً ينتمي إلى الفئة NilClass. تُستخدم للإشارة إلى أن المتغير لا يحتوي على قيمة.
الخصائص:
-
تُعتبر كاذبة (Falsy) في التقييم المنطقي.
-
تُستخدم بكثرة في عمليات التحقق من وجود القيم.
مثال:
rubyvalue = nil
puts value.nil? # true
7. المصفوفات (Arrays)
المصفوفة هي مجموعة مرتبة من العناصر يمكن أن تحتوي على أنواع بيانات مختلفة. تنتمي المصفوفات إلى الفئة Array وتُستخدم لتخزين أكثر من قيمة في متغير واحد.
الخصائص:
-
يمكن أن تحتوي على عناصر مختلفة (String, Integer, Float…).
-
توفر العديد من الدوال المفيدة مثل
push,pop,map,each,select.
مثال:
rubyarray = [1, "لغة روبي", 3.14, true]
array.each { |el| puts el }
8. الجداول (Hashes)
تمثل القواميس أو الجداول في روبي، وهي هياكل بيانات تتكون من أزواج المفتاح والقيمة. يُستخدم نوع البيانات Hash لتخزين المعلومات بشكل غير مرتب حسب المفتاح.
الخصائص:
-
يُمكن أن تكون المفاتيح Symbols أو Strings أو أي كائن.
-
تُستخدم بشكل شائع في تمرير الخيارات والدوال.
مثال:
rubyperson = { name: "أحمد", age: 30, job: "مبرمج" }
puts person[:name] # "أحمد"
9. النطاقات (Ranges)
النطاقات تمثل تسلسلاً من القيم داخل حدود معينة. تُستخدم النطاقات في روبي لإنشاء سلاسل من الأعداد أو الأحرف بسهولة باستخدام .. للنطاق المغلق و... للنطاق المفتوح.
الخصائص:
-
يمكن استخدامها في التكرار والتحقق من القيم.
-
تنتمي إلى الفئة
Range.
مثال:
ruby(1..5).each { |i| puts i } # 1 2 3 4 5
10. الكائنات (Objects) والفئات (Classes)
في روبي، كل قيمة هي كائن، ويتم تحديد نوع هذا الكائن من خلال الفئة (Class) التي ينتمي إليها. يمكن للمطورين إنشاء فئاتهم الخاصة لتعريف أنواع بيانات جديدة.
مثال:
rubyclass Car
def initialize(make, model)
@make = make
@model = model
end
def description
"#{@make} - #{@model}"
end
end
car = Car.new("تويوتا", "كورولا")
puts car.description
11. القيم القابلة للتعداد (Enumerables)
تدعم روبي معيار الـ Enumerable الذي يسمح بالوصول إلى خصائص التكرار في الكائنات مثل المصفوفات والجداول. يوفر هذا النوع دوال مثل map, select, reduce, وغيرها.
جدول أنواع البيانات الرئيسية في روبي
| نوع البيانات | اسم الفئة (Class) | مثال على الاستخدام | ملاحظات |
|---|---|---|---|
| عدد صحيح | Integer | 5, -10 |
يدعم العمليات الحسابية |
| عدد عشري | Float | 3.14, -0.01 |
يستخدم للأرقام الدقيقة |
| منطقي | TrueClass / FalseClass | true, false |
لتقييم الشروط |
| سلسلة نصية | String | "Ruby", 'نص' |
يُستخدم لمعالجة النصوص |
| رمز | Symbol | :name, :age |
معرف ثابت وأسرع |
| لا شيء | NilClass | nil |
يمثل غياب القيمة |
| مصفوفة | Array | [1, 2, 3] |
مجموعة مرتبة من القيم |
| جدول | Hash | {name: "Ali"} |
أزواج مفتاح/قيمة |
| نطاق | Range | (1..10) |
تسلسل من القيم |
| كائن | Object | car = Car.new(...) |
يمكن إنشاؤه حسب الحاجة |
الخلاصة
تُعد أنواع البيانات في روبي جزءًا لا يتجزأ من بنيتها اللغوية الديناميكية، وتمنحها مرونة كبيرة في التعامل مع القيم والعمليات. من خلال اعتبار كل شيء كائناً، توفر روبي بيئة برمجية متناسقة وثرية تسمح بإنشاء تطبيقات قوية وفعالة. الفهم العميق لأنواع البيانات في روبي ضروري لبناء برامج موثوقة وقابلة للصيانة، سواء كنت تكتب سكريبتات بسيطة أو تطبيقات ويب كاملة باستخدام إطار عمل مثل Ruby on Rails.
المراجع:
-
The Ruby Programming Language – David Flanagan & Yukihiro Matsumoto

