Ruby هي لغة برمجة تفسيرية، ديناميكية، انعكاسية، كائنية التوجه . تم تطويرها بواسطة Yukihiro Matsumoto، وتركز Ruby على البساطة والإنتاجية. تتيح بنيتها البرمجية الأنيقة للمطورين قراءة وكتابة الأكواد البرمجية بشكل أسهل.
في هذا الدليل، سنعمل مع السلاسل النصية في Ruby.
المتطلبات الأساسية
لتنفيذ الخطوات الموضحة في هذا البرنامج التعليمي، تحتاج إلى المكونات التالية:
- نظام Ubuntu مهيأ بشكل صحيح. تعرف على المزيد حول تهيئة خادم Ubuntu الخاص بك على CloudSigma.
- أي محرر نصوص حديث، ويفضل أن يدعم تمييز بناء الجملة، على سبيل المثال، VS Code, Sublime Text, Atom, Brackets, Vim، إلخ.
نوع البيانات النصي (String)
في البرمجة، تعتبر السلسلة النصية نوع بيانات شائع تدعمه كل لغات البرمجة الحديثة. وتتميز بتسلسل من الأحرف. ويتم التعامل مع تسلسل الأحرف بأكمله كقطعة واحدة من البيانات. قد تحتوي السلسلة النصية على أحرف هجائية، وأرقام، ورموز/أحرف خاصة.
تتعامل Ruby، لكونها لغة برمجة كائنية التوجه بالكامل، مع السلاسل النصية ككائنات. وعلى عكس العديد من اللغات الأخرى، فإن السلاسل النصية في Ruby قابلة للتعديل. بشكل أساسي، يمكن تغيير قيمة السلسلة النصية في مكانها.
الخطوة 1 – إنشاء وطباعة السلاسل النصية
في Ruby، يتم إحاطة السلاسل النصية إما بعلامات اقتباس مفردة ( ') أو علامات اقتباس مزدوجة ( "). فيما يلي سلسلتان نصيتان صالحتان في Ruby:
|
1 2 |
'the quick brown fox' "jumps over the lazy dog" |
لطباعة أي مخرجات على شاشة وحدة التحكم، تأتي Ruby مع دالة print :
|
1 2 |
print 'the quick brown fox' print "jumps over the lazy dog" |
حان الوقت لتطبيق ذلك عمليًا. أنشئ ملف Ruby جديدًا باسم practice.rb وأدخل الأكواد التالية:
قم بتشغيل الكود:
|
1 |
ruby practice.rb |
كما هو متوقع، فإن أمر print يطبع السلاسل النصية المقدمة. إذا أردنا طباعة السلاسل النصية على أسطر منفصلة، فمن الأفضل استخدام puts بدلاً من ذلك. قم بتحديث الكود:
|
1 2 |
puts 'the quick brown fox' puts "jumps over the lazy dog" |
بعد ذلك، قم بتشغيل الكود مرة أخرى:
|
1 |
ruby practice.rb |
الخطوة 2 – متغيرات السلسلة النصية
المتغيرات هي أسماء تشير إلى مكان محدد في ذاكرة الكمبيوتر حيث يتم تخزين القيمة. يمكننا تخزين القيمة المطلوبة في المتغير واستخدامها لاحقًا.
في Ruby، للإعلان عن متغير سلسلة نصية، حدد اسم المتغير وقم بتعيين قيمة سلسلة نصية له:
|
1 |
<variable_name> = <string> |
اكتب الكود التالي في practice.rb:
|
1 2 3 4 |
first_half = 'the quick brown fox' second_half = "jumps over the lazy dog" puts first_half puts second_half |
قم بتشغيل الكود:
|
1 |
ruby practice.rb |
هنا:
- لقد قمنا بتعريف متغيرين first_half و second_half، تم تعيين قيمة سلسلة نصية لكل منهما.
- تقوم دالة puts بطباعة قيمة المتغيرات.
الخطوة 3 – دمج السلاسل النصية
من خلال الدمج، يمكننا أخذ سلاسل نصية متعددة وضمها معًا لإنشاء سلسلة نصية جديدة. يُشار إلى دمج السلاسل النصية بواسطة عامل الدمج ( +). لاحظ أن هذا الرمز هو أيضًا عامل الجمع عند العمل مع العمليات الحسابية.
دعونا نحاول إجراء دمج السلاسل النصية على السلاسل التي أعلنا عنها حتى الآن:
|
1 |
puts "the quick brown fox" + "jumps over the lazy dog" |
قم بتشغيل الكود:
|
1 |
ruby practice.rb |
كما يوضح الناتج، فإن الدمج لا يضيف أي حرف إضافي بين السلاسل النصية. ولهذا السبب فإن fox و jumps مدمجتان معًا. يمكننا إصلاح ذلك عن طريق إضافة مسافة فارغة بعد fox:
|
1 |
puts "the quick brown fox " + "jumps over the lazy dog" |
قم بتشغيل الكود:
|
1 |
ruby practice.rb |
الآن يبدو الناتج أفضل.
يعمل دمج السلاسل النصية أيضًا مع المتغيرات. ألقِ نظرة على المثال التالي:
|
1 2 |
first_half = "الثعلب البني السريع " puts first_half + "يقفز فوق الكلب الكسول" |
قم بتشغيل الكود:
|
1 |
ruby practice.rb |
يوضح المثال التالي سلسلة طويلة من دمج النصوص:
|
1 2 3 |
username = "cloudsigma" fav_color = "أزرق" puts "مرحباً، " + username + "! لونك المفضل هو " + fav_color + "." |
قم بتشغيل الكود:
|
1 |
ruby practice.rb |
حتى الآن، تعاملنا فقط مع متغيرات النصوص. ماذا لو كانت هناك أنواع متغيرات مختلفة؟ البرنامج التالي يختبر هذا السيناريو:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts username + user_id |
عند محاولة تشغيل هذا البرنامج، سيقوم Ruby برمي رسالة خطأ:
|
1 |
ruby practice.rb |
ومع ذلك، يمكننا تحويل العدد الصحيح إلى نص لتجنب هذه المشكلة:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts username + user_id.to_s |
هنا:
-
الدالة to_s تقوم بتحويل قيمة المتغير إلى نص.
يعد تحويل الأرقام إلى نصوص أمراً شائعاً عند التعامل مع عناصر مثل الرموز البريدية، والعملات، وأرقام الهواتف، والبيانات الرقمية الأخرى.
الخطوة 4 – إدراج النصوص
على الرغم من أن دمج النصوص ميزة قوية، إلا أنه قد يصبح معقداً بسهولة شديدة. في كثير من الحالات، ربما تجد نفسك قد نسيت عامل الدمج ( +)، مما يسبب صداعاً كبيراً. علاوة على ذلك، عند التعامل مع أنواع بيانات مختلفة، يجب تحويلها إلى نص أولاً. لحسن الحظ، يتيح Ruby طرقاً أخرى لإدخال قيم المتغيرات في النص باستخدام ميزة إدراج النصوص.
إليك كيف يبدو ذلك. على سبيل المثال، بدلاً من استخدام:
|
1 |
"مرحباً، " + username + "!" |
سنقوم باستخدام:
|
1 |
"مرحباً، #{username}!" |
على الرغم من أن الصيغة قد تبدو غريبة قليلاً، إلا أنها تبسط الكود بشكل كبير. لا داعي لاستدعاء الدالة to_s يدوياً لتحويل قيمة المتغير إلى نص.
دعنا نستخدم هذه التقنية الجديدة لتحديث الكود السابق لدينا:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts "مرحباً، #{username}! معرف المستخدم الخاص بك هو #{user_id}" |
قم بتشغيل الكود:
|
1 |
ruby practice.rb |
الخطوة 5 – النصوص الحرفية وقيم النصوص
لاحظ أن النصوص المعلن عنها في الأكواد تكون محاطة دائماً بعلامات اقتباس. ومع ذلك، عند طباعة المخرجات على شاشة وحدة التحكم، لا توجد رموز اقتباس. هناك بوضوح فرق بينهما.
- النص الحرفي: هو النص المكتوب في الكود المصدري (بما في ذلك علامات الاقتباس).
- قيمة النص: هي القيمة التي يتم طباعتها في المخرجات (بدون علامات الاقتباس).
على سبيل المثال، النص التالي هو نص حرفي:
|
1 |
"أهلاً بالعالم" |
وقيمة النص الخاصة به ستكون أهلاً بالعالم.
الخطوة 6 – تخطي علامات الاقتباس والفاصلة العليا
كما أوضحنا، تُستخدم علامات الاقتباس والفواصل العليا للدلالة على النصوص في الكود المصدري. هذا يطرح مشكلة: لا يمكنك وضعها مباشرة في النص. وإلا، فسيؤدي ذلك إلى حدوث مشكلات. يوضح الكود التالي ذلك:
|
1 |
puts 'it's what it is' |
هناك تكتيكات مختلفة للالتفاف على هذه المشكلة.
-
استخدام صيغة نصية بديلة
هذه هي أبسط طريقة لتجاوز المشكلة. إذا كان نصك يحتاج إلى علامات اقتباس مفردة، فاستخدم علامات اقتباس مزدوجة في النص الحرفي (والعكس صحيح).
دعنا نصلح المثال السابق:
|
1 |
puts "هذا هو واقع الحال" |
مثال آخر سيكون:
|
1 |
puts 'he said, "hello world"' |
ومع ذلك، لن ينجح هذا في كل الحالات. على سبيل المثال:
|
1 |
puts "يقول Clousdigma، "I'm a happy boi!"" |
-
استخدام رموز الهروب
غالباً ما يُشار إلى الشرطة المائلة العكسية ( \) باسم رمز الهروب. وهي تمنع Ruby من تفسير الرمز التالي حرفياً. دعنا نصلح المثال السابق. استخدم الشرطة المائلة العكسية لمنع Ruby من تفسير علامات الاقتباس المزدوجة الداخلية كرموز حرفية:
|
1 |
puts "يقول Cloudsigma، \"أنا ولد سعيد!\"" |
-
استخدام صيغة بديلة
حتى الآن، كنا نعمل فقط مع علامات الاقتباس الفردية والمزدوجة للإشارة إلى السلسلة النصية الحرفية. ومع ذلك، فإن الأمثلة السابقة هي عروض توضيحية بسيطة لكيفية خروج هذا الأمر عن السيطرة بسرعة كبيرة. لحل هذه المشكلة، يمكننا التخلي عن علامات الاقتباس تمامًا واستخدام رمز مختلف تمامًا للإشارة إلى بداية ونهاية السلسلة النصية.
ألقِ نظرة على المثال التالي:
|
1 |
%$الـ سريع بني ثعلب قال, "لقد قفزت فوق الكلب الكسول"$ |
هنا:
-
- الرمز % يحدد الحرف التالي ( $، في هذه الحالة) كمحدد للسلسلة النصية.
- السلسلة النصية الحرفية هنا هي $الـ سريع بني ثعلب قال, "لقد قفزت فوق الكلب الكسول"$.
دعنا نضع ذلك قيد التنفيذ:
|
1 |
puts %$الـ سريع بني ثعلب قال, "لقد قفزت فوق الكلب الكسول"$ |
هنا، يتم التعامل مع السلسلة النصية بشكل أساسي على النحو التالي:
|
1 |
"قال الثعلب البني السريع، \"لقد قفزت فوق الكلب الكسول\"" |
ومع ذلك، فإنه يعيد تقديم مشكلة هروب المحدد إذا تم استخدامه في السلسلة النصية. إحدى طرق تجنب ذلك هي استخدام رموز لا تظهر عادةً في السلاسل النصية. يمكن أن تشمل هذه الرموز الأقواس المتعرجة، والأقواس المربعة، وما إلى ذلك:
|
1 |
puts %{"مرحباً، بالعالم!", هو قال} |
كما أنه يعمل بشكل ممتاز مع إدراج السلاسل النصية:
|
1 2 3 |
username = "cloudsigma" user_id = 5 puts %{مرحباً, #{username}.#{user_id}!} |
من الشائع أيضاً استخدام %Q{} و %q{} لتعريف السلاسل النصية في برامج Ruby. هنا، %Q{} تعمل مثل علامات الاقتباس المزدوجة و %q{} تعمل مثل علامات الاقتباس الفردية.
الخطوة 7 – الأسطر الجديدة والسلاسل النصية الطويلة
عند العمل مع السلاسل النصية، ستكون هناك مواقف ترغب فيها في إدخال سطر جديد أو إرجاع أول السطر في السلسلة النصية. يمكننا القيام بذلك عن طريق إدخال أحرف الهروب \n (سطر جديد) و \r (إرجاع أول السطر).
ألقِ نظرة على المثال التالي:
|
1 2 |
hello_world = "الـ سريع\nبني ثعلب\nيقفز فوق\nالـ كسول كلب" puts hello_world |
تبدو السلسلة النصية الحرفية مربكة، أليس كذلك؟ دعنا نعد ترتيبها لتحسين قابليتها للقراءة:
|
1 2 3 4 5 6 7 |
hello_world = "الـ سريع\n" + "بني ثعلب\n" + "يقفز فوق\n" + "الـ كسول كلب" puts hello_world |
بدلاً من الإعلان يدوياً عن أحرف السطر الجديد، يمكننا أيضاً استخدام الهيكل التالي:
|
1 2 3 4 5 6 |
hello_world = "الـ سريع بني ثعلب يقفز فوق الـ كسول كلب" puts hello_world |
في هذه الطريقة، تحافظ السلسلة النصية على جميع المسافات البيضاء. ومع ذلك، فإن هذا يشوه المخرجات. قم بإزالة المسافات البيضاء الإضافية لإصلاح ذلك:
|
1 2 3 4 5 |
hello_world = "الـ سريع بني ثعلب يقفز فوق الـ كسول كلب" |
على الرغم من إصلاح مشكلة المسافات البيضاء، إلا أن ذلك يقلل من قابلية قراءة الكود. يمكننا إصلاح هذه المشكلة عن طريق تطبيق heredoc، وهو مصطلح يعبر عن السلاسل النصية الحرفية متعددة الأسطر. سيبدو الكود المحدث كما يلي:
|
1 2 3 4 5 6 7 8 |
hello_world = <<-END الـ سريع بني ثعلب يقفز فوق الـ كسول كلب END puts hello_world |
بدءاً من إصدار Ruby v2.3 وما فوق، تتوفر ميزة أخرى تسمى متعرج heredoc . وهي تزيل المسافات البيضاء البادئة في السلاسل النصية. للتعبير عن متعرج heredoc، استبدل الوصلة ( -) بعلامة المدة ( ~):
|
1 2 3 4 5 6 7 8 |
hello_world = <<~END الـ سريع بني ثعلب يقفز فوق الـ كسول كلب END puts hello_world |
الخطوة 8 – تكرار السلاسل النصية
في بعض الحالات، قد يكون من الضروري تكرار سلسلة نصية عدة مرات. تتيح لغة Ruby تكرار السلاسل النصية بطرق مختلفة.
إحدى هذه التقنيات هي استخدام * عامل. بشكل عام، يُستخدم كعامل الضرب عند التعامل مع الأرقام. أما عند التعامل مع السلاسل النصية، فإنه يصبح عامل تكرار السلاسل النصية، حيث يكرر السلسلة النصية الفردية عدد المرات المطلوب. يجب أن يكون عدد التكرارات عددًا صحيحًا.
في المثال التالي، سيتم تكرار النص Boris 5 مرات:
|
1 |
print "Boris" * 5 + "\n" |
باستخدام هذه الميزة، يمكننا إنتاج بعض رسومات ASCII الرائعة. تحقق من المثال التالي:
|
1 2 3 |
puts "=" * 15 puts "| hello world |" puts "=" * 15 |
أفكار نهائية
تعتبر السلاسل النصية، في البرمجة، أمرًا جوهريًا. يوضح هذا الدليل كيفية التعامل مع السلاسل النصية في Ruby. لقد تعلمنا كيفية إنشاء السلاسل النصية وإجراء عمليات مختلفة مثل الدمج، والتعامل مع السطور الجديدة، وعلامات الاقتباس، وما إلى ذلك. باستخدام دمج السلاسل النصية (string interpolation)، تعلمنا أيضًا كيفية دمج قيم المتغيرات بشكل أفضل في السلاسل النصية. باستخدام عامل تكرار السلاسل النصية، يمكننا أيضًا تكرار سلسلة نصية واحدة عدة مرات.
بينما تعد Ruby، في حد ذاتها، لغة برمجة ممتازة، إلا أنها غالبًا ما تُدمج مع إطار عمل Rails. Ruby on Rails هو إطار عمل مفتوح المصدر لتطبيقات الويب. تعرف على المزيد حول تثبيت Ruby on Rails على Ubuntu. ومع ذلك، يمكن لـ Ruby أيضًا العمل مع تطبيقات أخرى، مثل MySQL و PostgreSQL.
حوسبة سعيدة!












































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