المقدمة
A string is a sequence of one or more characters that may consist of letters, numbers, or symbols.
السلاسل في روبي هي كائنات، وعلى عكس لغات أخرى، السلاسل قابلة للتغيير، مما يعني أنه يمكن تعديلها في المكان بدلاً من إنشاء سلاسل جديدة.
ستستخدم السلاسل في معظم البرامج التي تكتبها. تتيح لك السلاسل عرض المعلومات والتفاعل مع المستخدمين باستخدام النصوص. في الواقع، الصفحة التي تقرأها الآن تتكون من سلاسل تُعرض على الشاشة من خلال متصفح الويب الخاص بك. السلاسل هي واحدة من أهم أساسيات البرمجة.
في هذا البرنامج التعليمي، ستتعلم كيفية التعامل مع السلاسل في روبي. ستقوم بإنشاء سلاسل، وعرضها على الشاشة، وتخزينها في متغيرات، ودمج العديد من السلاسل معًا، وستتعلم كيفية التعامل مع الرموز الخاصة مثل الأسطر الجديدة والفواصل وعلامات التنصيص.
إنشاء وطباعة السلاسل
تكون السلاسل داخل علامات اقتباس إما فرديّة '
أو مزدوجة "
في روبي، لذلك لإنشاء سلسلة، قم بتضمين تسلسل من الأحرف في إحدى العلامات:
'This is a string in single quotes.'
"This is a string in double quotes."
يمكنك اختيار استخدام علامات تنصيص فردية أو علامات تنصيص مزدوجة. في معظم الحالات، لا يهم أي منهما تختار، طالما كنت متسقًا. ومع ذلك، استخدام علامات التنصيص المزدوجة يتيح لك أداء تداخل السلاسل، والتي ستتعرف عليها في هذا البرنامج التعليمي.
لعرض سلسلة في برنامجك، يمكنك استخدام طريقة print
:
print "Let's print out this string."
تقوم طريقة print
بعرض السلسلة بالضبط كما هي مكتوبة.
جرب ذلك. أنشئ برنامج Ruby جديد يسمى print.rb
باستخدام محرر النصوص الخاص بك، واستخدم طريقة print
لطباعة ثلاث سلاسل:
print 'This is the first string.'
print 'This is the second string.'
print 'This is the third string.'
احفظ الملف وشغل البرنامج:
- ruby print.rb
سترى الناتج التالي:
OutputThis is the first string.This is the second string.This is the third string.
بدلاً من طباعة السلاسل الثلاثة على أسطرها الخاصة، تم طباعة السلاسل الثلاثة معًا على سطر واحد. طريقة print
تقوم بطباعة السلسلة على الشاشة، ولكن إذا كنت ترغب في وجود كل سلسلة على سطرها الخاص، يجب عليك إضافة حرف انقطاع السطر بنفسك.
إذا كنت ترغب في وجود السلاسل الثلاثة على أسطر منفصلة، استخدم طريقة puts
بدلاً من طريقة print
. قم بتعديل البرنامج الخاص بك لاستخدام puts
بدلاً من print
:
puts 'This is the first string.'
puts 'This is the second string.'
puts 'This is the third string.'
الآن قم بتشغيل البرنامج مرة أخرى، وسترى هذا الناتج:
OutputThis is the first string.
This is the second string.
This is the third string.
طريقة puts
تقوم بطباعة السلسلة التي تحددها، وتضيف أيضًا حرف انقطاع السطر في نهاية السلسلة بالنيابة عنك.
تخزين السلاسل في المتغيرات
المتغيرات هي إسم مشترك لمكان في ذاكرة الكمبيوتر. تستخدم المتغيرات لتخزين البيانات واسترجاعها لاحقًا.
لتخزين سلسلة نصية في متغير، قم بتعريف اسم المتغير وتعيين قيمة السلسلة:
my_string = 'This is my string'
ثم، لاسترجاع القيمة، استخدم اسم المتغير:
print my_string
للاختبار بنفسك، أنشئ الملف string_variables.rb
في محرر النصوص الخاص بك باستخدام الأمر التالي:
- nano string_variables.rb
ثم أضف الكود التالي:
my_name = "Sammy the Shark"
my_age = "none of your business"
puts my_name
puts my_age
يقوم هذا البرنامج بتعريف متغيرين: my_name
و my_age
. يتم تعيين سلسلة نصية لكل متغير. بعد ذلك نستخدم الأسلوب puts
لطباعة كل سلسلة في سطر منفصل.
احفظ الملف بالضغط على CTRL + X
و y
، ثم قم بتنفيذ البرنامج:
- ruby string_variables.rb
سترى النتيجة التالية:
OutputSammy the Shark
none of your business
من خلال تعيين سلاسل نصية للمتغيرات، يمكنك تجنب كتابة نفس السلسلة مرارًا وتكرارًا في كل مرة تريد استخدامها، مما يجعل من السهل العمل مع السلاسل وتلاعبها في برامجك.
لنلقِ نظرة على كيفية دمج السلاسل معًا لإنشاء سلاسل جديدة.
توصيل السلاسل
التَّوصيل يعني دمج سلسلتين أو أكثر معًا لإنشاء سلسلة جديدة. للقيام بالتَّوصيل، نستخدم مشغل التَّوصيل، الذي يُمثَّل برمز +
. الرمز +
هو أيضًا مشغل الجمع عند استخدامه مع العمليات الحسابية.
إليك كيف يمكنك توصيل سلاسل sammy
و shark
معًا:
"sammy" + "shark"
سيؤدي هذا إلى إنتاج الناتج التالي:
Outputsammyshark
التَّوصيل يجمع السلاسل نهايةً إلى نهاية، مدمجًا بهم ومخرجًا قيمة سلسلة جديدة تمامًا. إذا كنت ترغب في وجود مسافة بين الكلمات sammy
و shark
، عليك تضمين تلك المسافة في إحدى السلاسل، مثل هذا:
"sammy " + "shark"
الآن، لن تقوم حقًا بكتابة كود مثل هذا في برنامج، ولكن ستحتاج إلى دمج السلاسل والمتغيرات معًا بشكل شائع، وهذا هو المكان الذي يأتي فيه التَّوصيل.
إليك مثال:
color = "Blue"
print "My favorite color is " + color
سيؤدي هذا إلى إخراج لوني المفضَّل هو الأزرق
. لاحظ أننا تركنا مسافة بعد كلمة هو
في السلسلة لكي يكون هناك مسافة بين السلسلة وقيمة المتغير في الإخراج.
يمكنك توصيل العديد من السلاسل معًا بهذه الطريقة. قم بإنشاء ملف concatenation.rb
وأضف هذا الكود:
my_name = "Sammy the Shark"
my_age = "none of your business"
puts "My name is " + my_name + " and my age is " + my_age + "."
يقوم هذا البرنامج بتعريف متغيرين: my_name
و my_age
، كل منهما مع سلسلته المعينة الخاصة، تمامًا كما فعلت من قبل. ولكن هذه المرة، بدلاً من طباعة القيم، نقوم بطباعة سلسلة تستخدم التَّوصيل لطباعة تلك القيم ببعض السياق إضافي.
عند تشغيل هذا البرنامج، سترى الناتج التالي:
OutputMy name is Sammy the Shark and my age is none of your business.
في هذا البرنامج الصغير، استخدمت عملية الدمج لإدراج المتغيرات في هذه السلسلة.
عندما تقوم بدمج سلسلتين أو أكثر، فإنك تنشئ سلسلة جديدة يمكنك استخدامها في جميع أنحاء برنامجك. قد ترغب في تعيين السلسلة التي أنشأتها إلى متغير جديد يمكنك استخدامه لاحقًا:
my_name = "Sammy the Shark"
my_age = "none of your business"
# تعيين السلسلة المدموجة إلى متغير
output = "My name is " + my_name + " and my age is " + my_age + "."
# طباعة النتيجة
puts output
في برنامج صغير مثل هذا، ربما لا يكون استخدام متغير إضافي output
ضروريًا. ولكن في البرامج الأكبر حجمًا، قد ترغب في إنشاء سلسلة باستخدام الدمج التي ستستخدمها في أماكن متعددة. كما أنه من العادة الجيدة فصل معالجة البيانات مثل الدمج والحسابات الحسابية عن الإخراج، حيث ستصبح برامجك أكبر بمرور الوقت وسترغب في فصل السيطرة والإخراج في ملفات أو مكونات منفصلة لتسهيل إدارتها.
تأكد من عدم استخدام عامل الجمع +
بين نوعي بيانات مختلفين. على سبيل المثال، لا يمكنك دمج سلاسل وأعداد صحيحة معًا.
لمعرفة ما يحدث، قم بإنشاء برنامج جديد يسمى strings_and_integers.rb
واكتب فيه المحتوى التالي:
my_name = "Sammy the Shark"
my_number = 27
print my_name + my_number
في هذا الوقت، لدينا متغير my_name
الذي يحمل السلسلة Sammy the Shark
ومتغير my_number
الذي يحمل العدد الصحيح 27
. نعلم أن 27
ليس سلسلة لأنه ليس محاطًا بعلامات اقتباس. كما أنه لا يحتوي على نقطة عشرية، لذلك نعلم أنه عدد صحيح.
إذا قمت بتشغيل البرنامج:
- ruby strings_and_ints.rb
ستظهر لك رسالة الخطأ هذه:
Outputstrings_and_ints.rb:4:in `+': no implicit conversion of Integer into String (TypeError)
from strings_and_ints.rb:4:in `<main>'
الخطأ لا يوجد تحويل ضمني من Integer إلى String
يعني أن Ruby يمكنها فقط دمج سلسلة نصية مع السلسلة النصية الحالية.
في إصدار Ruby 2.3 وأقل، سترى هذه رسالة الخطأ بدلاً من ذلك:
strings_and_ints.rb:4:in `+': no implicit conversion of Fixnum into String (TypeError)
from strings_and_ints.rb:4:in `<main>'
كانت الكلمة الرئيسية Fixnum
هي نوع البيانات المعطى للأعداد الصحيحة في الإصدارات السابقة من Ruby. إنها اختصار لـ Fixed Number. في Ruby 2.4، Fixnum
وشريكها Bignum
لم يعدا موجودين واستبدلوا بـ Integer
بدلاً من ذلك.
يمكننا تعديل برنامجنا ووضع الرقم 27
بين علامات الاقتباس ("27"
) بحيث يتم تعريفه كنص بدلاً من عدد صحيح. أو يمكننا تحويل الرقم إلى نص عند إنشاء السلسلة، مثل هذا:
my_name = "Sammy the Shark"
my_number = 27
print my_name + my_number.to_s
الطريقة .to_s
تحول العدد الصحيح إلى سلسلة نصية. هذا هو نهج أفضل، حيث يسمح لنا بالاحتفاظ بالعدد كعدد صحيح في برنامجنا. نحن بحاجة فقط إلى أن يكون نصًا عندما نقوم بطباعته، ولكن قد نرغب في أن يكون عددًا صحيحًا إذا كان علينا استخدامه في أجزاء أخرى من منطق برنامجنا.
قم بتشغيل البرنامج مرة أخرى وسترى Sammy the Shark27
مطبوعة على الشاشة.
تحويل الأرقام إلى سلاسل نصية للدمج هو شيء ستواجهه بشكل متكرر عند التعامل مع الرموز البريدية، العملات، أرقام الهواتف، وبيانات رقمية أخرى ترغب في عرضها على الشاشة بجانب النص.
التوالي هو قوي، ولكن قد يكون معقدًا. إذا تركت أحد أوامر +
عن طريق الخطأ، فقد تحصل على خطأ في الصيغة. وإذا كان عليك دمج السلاسل مع المتغيرات التي تحتوي على أرقام، عليك تحويل المتغيرات إلى سلاسل. توفر لغة Ruby طريقة أخرى لحقن قيم المتغيرات في سلسلة، تُسمى تضمين السلسلة والتي تعالج كلا هذين المشكلتين.
استخدام تضمين السلسلة
عند دمج السلاسل والمتغيرات، يمكن أن يكون الإخراج صعب القراءة وتصحيحه. يحل تضمين السلسلة هذه المشكلة من خلال السماح لك بتضمين التعابير في سلسلة مغلقة بعلامات اقتباس مزدوجة.
بدلاً من كتابة هذا:
"My name is " + my_name + "!"
يمكنك فعل ذلك:
"My name is #{my_name}!"
بدلاً من إنهاء السلسلة واستخدام أمر +
، يتم تضمين المتغير ببناء #{}
. هذا البناء يخبر لغة Ruby بتقييم التعبير وحقنه في السلسلة.
جربه. أنشئ برنامجًا جديدًا يُسمى interpolation.rb
وأضف هذا الكود:
my_name = "Sammy the Shark"
my_age = "none of your business"
output = "My name is #{my_name} and my age is #{my_age}."
puts output
هذا هو نفس البرنامج الذي كتبته بالفعل، ولكن هذه المرة نستخدم تضمين السلسلة لإنشاء الإخراج.
تضمين السلسلة لديه فائدة أخرى: يمكنه تحويل القيم الرقمية إلى سلاسل تلقائيًا. هل تتذكر برنامجك strings_and_integers.rb
؟ افتح تلك الملف مرة أخرى في محرر النصوص الخاص بك وقم بتغيير السطر الأخير بحيث يبدو كالتالي:
my_name = "Sammy the Shark"
my_number = 27
# استخدم التداخل بدلاً من الاقتران
print "My name is #{my_name} and my favorite number is #{my_number}."
ستقوم Ruby تلقائيًا بتحويل my_number
إلى سلسلة نصية، وسيقوم برنامجك بطباعة الإخراج التالي عند تشغيله:
OutputMy name is Sammy the Shark and my favorite number is 27.
التداخل النصي هو قوي ومريح. إنه أيضًا الطريقة المفضلة لربط السلاسل مع المتغيرات.
الثوابت النصية وقيم السلاسل
لاحظ أن جميع السلاسل التي أنشأتها محاطة بعلامات اقتباس في الشيفرة، ولكن الإخراج المطبوع الفعلي لا يتضمن علامات الاقتباس.
هنا توجد تمييز عند الإشارة إلى كل منها. الثابت النصي هو السلسلة كما هي مكتوبة في شيفرة المصدر، بما في ذلك الاقتباسات. قيمة السلسلة هي ما تراه في الإخراج، ولا تتضمن الاقتباسات.
هذا هو الثابت النصي:
"Sammy the Shark"
سيكون قيمة السلسلة Sammy the Shark
.
في معظم الحالات، لن تضطر إلى القلق بشأن هذا الفرق، ما لم ترغب في استخدام أحرف خاصة مثل علامات الاقتباس أو الفواصل في سلاسلك.
الفرار من علامات الاقتباس والفواصل في السلاسل
نظرًا لاستخدام علامات الاقتباس للإشارة إلى السلاسل، ستحتاج إلى قليل من العمل الإضافي إذا كنت ترغب في استخدام علامات الفراغ والاقتباسات في السلاسل.
إذا حاولت استخدام علامة فراغ في منتصف سلسلة معروضة بواسطة علامة اقتباس واحدة، مثل هذا:
'This isn't what I wanted.'
فإن العلامة فراغ في isn't
تنهي السلسلة، كما يمكنك رؤية ذلك من التظليل الغريب في هذا المثال. نتيجة لذلك، سيحاول مترجم Ruby تحليل بقية السلسلة المقصودة كشفرة وستحصل على خطأ.
ستواجه نفس المشكلة إذا استخدمت علامات اقتباس مزدوجة في سلسلة محاطة بعلامات اقتباس مزدوجة:
"Sammy says, "Hello!""
في هذا المثال، تنهي علامة الاقتباس المزدوجة التي تسبق Hello
السلسلة، وتنشئ علامة الاقتباس المزدوجة بعد Hello!
سلسلة جديدة لا تحتوي على علامة اقتباس مزدوجة متطابقة لإنهائها، لذا ستعرض Ruby خطأ.
لتجنب هذه المشكلة، لديك بعض الخيارات. أولاً، يمكنك استخدام بنية بديلة لإنشاء السلاسل؛ إذا كنت مضطرًا لاستخدام علامات اقتباس مزدوجة في السلسلة، استخدم علامات اقتباس واحدة لتعريف السلسلة، والعكس صحيح. يمكنك أيضًا تهريب الاقتباسات، أو يمكنك استخدام بنية Ruby مختلفة لتعريف السلاسل. دعنا نلقي نظرة على كل نهج.
الخيار 1: استخدام بنية السلسلة البديلة
أسهل طريقة للتعامل مع هذه المشكلات هي تضمين السلسلة الخاصة بك بين علامات اقتباس واحدة عندما تحتاج السلسلة إلى استخدام اقتباس مزدوج، وتضمين السلسلة الخاصة بك بين علامات اقتباس مزدوجة عندما تحتاج السلسلة الخاصة بك إلى استخدام اقتباسات واحدة.
بدلاً من تحديد هذه السلسلة بين علامات اقتباس واحدة:
'This isn't what I wanted.'
حددوها بين علامات اقتباس مزدوجة:
"This isn't what I wanted."
وبدلاً من استخدام اقتباسات مزدوجة لتحديد هذه السلسلة:
"Sammy says, "Hello!""
استخدم اقتباسات واحدة:
'Sammy says, "Hello!"'
استخدام الصيغة البديلة يمكن أن يساعدك في التعامل مع بعض المشاكل بسرعة، لكنه لن يعمل دائمًا. على سبيل المثال، لن يعمل أي من الطريقتين لتحديد هذه السلسلة:
"Sammy says, "I'm a happy shark!""
في هذا المثال، يلغي الاقتباس المزدوج المغلق أمام I'm
الأمور. ينهي هذا السلسلة الأولى، ثم تواجه روبي الفاصلة في I'm
، التي تبدأ سلسلة جديدة بقيمة m a happy shark!""
. ولكن هذه السلسلة الجديدة لا تحتوي على اقتباس واحد مطابق لإنهائها. واستخدام اقتباسات واحدة لتضمين السلسلة يثير مشكلة مماثلة:
'Sammy says, "I'm a happy shark!"'
هذه المرة تنهي الفاصلة في I'm
السلسلة.
استخدام الصيغة البديلة يمكن أيضًا أن يجعل كودك غير متناسق. التحول باستمرار بين صيغ السلسلة يمكن أن يكون مربكًا، يمكننا الهروب من الأحرف للتغلب على هذه المشكلة.
الخيار 2: الهروب من الأحرف في السلاسل
الحرف الخلفي (\
)، المشار إليه في كثير من الأحيان بـ حرف الهروب في السلاسل، سيمنع Ruby من تفسير الحرف التالي في السلسلة بشكل حرفي.
ها هو سلسلتنا المشكلة، المشفرة بعلامات اقتباس مزدوجة، مع علامات اقتباس مزدوجة داخلها:
"Sammy says, "I'm a happy shark!""
قم بإنشاء برنامج Ruby جديد يسمى quoting.rb
وأضف هذا الكود إلى الملف:
print "Sammy says, "I'm a happy shark!""
قم بتشغيل البرنامج:
- ruby quoting.rb
وسترى هذه النتيجة:
Outputquoting.rb:1: syntax error, unexpected tCONSTANT, expecting end-of-input
print "Sammy says, "I'm a happy shark!""
^
لإصلاح الخطأ، استخدم الشرطة الخلفية أمام علامات الاقتباس المزدوجة الداخلية:
print "Sammy says, \"I'm a happy shark!\""
ثم قم بتشغيل البرنامج مرة أخرى وسترى النتيجة التي كنت تتوقعها:
Sammy says, "I'm a happy shark!"
لاحظ أنه لا يلزمك الهروب من الفاصلة العليا في هذا المثال، لأنه لا يوجد تعارض. عليك فقط الهروب من الاقتباسات التي ستربك Ruby.
يمكنك تجنب الهروب من الاقتباسات بشكل كامل عن طريق استخدام بنية ترميز مختلفة لتعريف السلاسل.
الخيار 3: استخدام بنية ترميز بديلة للسلاسل
حتى الآن، استخدمت الاقتباسات لتحديد حدود السلاسل الخاصة بك. يمكنك إنشاء سلاسل في Ruby باستخدام أحرف أخرى أيضًا. يمكنك تعريف الفاصل، أو الحرف الذي ترغب في استخدامه لإغلاق سلسلتك، عن طريق تحديده بعد علامة النسبة المئوية، مثل هذا:
%$Sammy says, "I'm a happy shark!"$
ستقوم هذه البنية بتهريب السلاسل المضمنة تلقائيًا بالنسبة لك. تبدو السلسلة الفعلية مثل هذا:
"Sammy says, \"I'm a happy shark!\""
ومع ذلك ، فإن تغيير الفاصل يعني أنه يتعين عليك تفادي الفاصل إذا كنت بحاجة إلى استخدامه. في هذه الحالة. إذا كان عليك استخدام علامة دولار في سلسلة النصوص الخاصة بك ، ستحتاج إلى تفادي علامة الدولار الحرفية في السلسلة.
لتجنب ذلك ، يمكنك أيضًا استخدام أزواج من الأقواس الزاوية أو الأقواس أو الأقواس كفاصل. الأقواس الزاوية هي الأكثر شيوعًا:
%{Sammy says, "I'm a happy shark!"}
تدعم هذه الأشكال جميعًا تضمين السلسلة إذا كنت بحاجة إليها.
droplets = 5
print %{Sammy says, "I just created #{droplets} droplets!"}
سوف ترى أيضًا استخدامًا لـ %Q{}
و %q{}
لتعريف السلاسل في برامج Ruby. يعمل بناء الجملة %Q{}
بالضبط مثل السلاسل المزدوجة بالتأكيد ، وهذا يعني أنه لا يتعين عليك تفادي اقتباسات مزدوجة ، وسوف تتمكن من استخدام تضمين السلسلة:
droplets = 5
print %Q{Sammy says, "I just created #{droplets} droplets!"}
بناء الجملة %q{}
يعمل بالضبط مثل السلاسل المفردة:
%q{Sammy says, "I'm a happy shark!"}
قد ترى بناء الجملة %q
و %Q
المستخدم مع الأقواس أو الأقواس الزاوية في بعض البرامج بدلاً من الأقواس الزاوية.
كما ترى ، هناك العديد من الطرق لإنشاء سلاسل في Ruby. أيا كانت الطريقة التي تختارها ، فكن متسقًا في كودك. ستجد أن بناء الجملة %Q{}
و %{}
هما الأكثر شيوعًا.
الآن بعد أن تعرف كيفية التعامل مع الأحرف الخاصة ، دعنا نلقي نظرة على كيفية التعامل مع السلاسل الطويلة وأحرف السطر الجديد.
السلاسل الطويلة وأحرف السطر الجديد
هناك أوقات قد ترغب في إدراج حرف تغيير السطر، أو العودة إلى السطر في سلسلتك. يمكنك استخدام حروف الهروب \n
أو \r
لإدراج سطر جديد في الشفرة:
output = "This is\na string\nwith newlines"
puts output
سينتج هذا البرنامج هذه النتيجة:
OutputThis is
a string
with newlines
هذا يعمل تقنياً للحصول على إخراجنا على عدة أسطر. ومع ذلك، سيصبح كتابة سلسلة طويلة جدًا على سطر واحد بسرعة صعبًا جدًا للقراءة والعمل معها. هناك بعض الحلول.
أولاً، يمكنك استخدام عامل الاتصال لتقسيم السلسلة على عدة أسطر:
output = "This is a\n" +
"longer string\n" +
"with newlines."
puts output
هذا مجرد اتصال لثلاث سلاسل معًا، مماثل لما فعلته بالفعل.
يمكنك أيضًا وضع فواصل السطر مباشرة في السلسلة:
output = "This is a
longer string
with newlines"
puts output
يمكنك أيضًا استخدام أي من صيغ السلاسل البديلة لإنشاء سلاسل متعددة الأسطر:
output = %{This is a
longer string
with newlines}
puts output
في كلتا الحالتين، لاحظ أنه لا نحتاج إلى حروف الهروب ( \n
) النهائية. تحافظ هذه الطريقة على المسافات البيضاء، بما في ذلك البادئة والأسطر الجديدة.
نتيجة لذلك، ستحتوي النتيجة على فواصل السطر، بالإضافة إلى جميع المسافات البادئة، مثل هذا:
OutputThis is a
longer string
with newlines
لمنع ذلك، قم بإزالة المسافات البيضاء الإضافية من الشفرة الخاصة بك:
output = %{This is a
longer string
with newlines
}
يمكنك أيضًا إنشاء سلاسل متعددة الأسطر باستخدام heredoc، أو “وثيقة هنا”، وهي مصطلح يستخدم للسلاسل النصية متعددة الأسطر في البرامج. إليك كيفية كتابة تلك الشفرة:
output = <<-END
This is a
longer string
with newlines
END
تشير العلامات <<-END
و END
إلى بداية ونهاية وثيقة هنا.
تحافظ Heredocs في Ruby أيضًا على أحرف الفراغ البيضاء، وهذا يعني إذا قمت بتهيئة الكود في heredoc ، فإن التهيئة البادئة ستحتفظ بها أيضًا. لذلك، هذا الكود:
output = <<-END
This is a
longer string
with newlines
END
سيتم طباعته مع تهيئة تضم مسافتين بادئتين.
يوفر Ruby 2.3 والإصدارات الأحدث بناءً على “سيناريو heredoc” بناءً على سيناريو “سيناريو heredoc” يقوم تلقائيًا بإزالة هذه الفراغات البيضاء البادئة. استبدل علامة الشرطة في تعريف heredoc بعلامة التلد (~) ، لذا يصبح <<-
مثل هذا <<~
:
output = <<~END
This is a
longer string
with newlines
and the code is indented
but the output is not.
END
هذا ينتج الناتج التالي:
OutputThis is a
longer string
with newlines
and the code is indented
but the output is not.
يتيح لك استخدام heredocs والاحتفاظ بتهيئة الكود بشكل جيد.
يدعم Heredocs في Ruby أيضًا تعبئة السلسلة.
كما يمكنك رؤية، هناك العديد من الطرق للتعامل مع الأسطر الجديدة والسلاسل متعددة الأسطر في Ruby. ستواجه جميع هذه الأساليب أثناء العمل مع رمز Ruby الحالي، حيث يعتمد كل مشروع على أسلوبه الخاص. في رمزك الخاص، اختر الأسلوب الذي يناسبك وكن متسقًا.
تكرار السلاسل
قد يكون هناك أوقات تحتاج فيها إلى استخدام Ruby لتكرار سلسلة من الأحرف عدة مرات. يمكنك القيام بذلك باستخدام عامل الضرب (*) . مثل عامل الجمع (+) ، يحتوي عامل الضرب (*) على استخدام مختلف عند استخدامه مع الأرقام ، حيث يعتبر عامل الضرب عند استخدامه مع سلسلة وعدد صحيح ، عامل تكرار السلسلة ، حيث يكرر سلسلة واحدة بالعدد الصحيح الذي تقدمه.
لطباعة Sammy
تسع مرات، يمكنك استخدام الكود التالي:
print "Sammy" * 9
ينتج هذا الكود الناتج التالي:
OutputSammySammySammySammySammySammySammySammySammy
يمكنك استخدام هذا لإنشاء بعض الفنون الأسكي الجميلة. قم بإنشاء ملف يسمى banner.rb
وأضف الكود التالي:
puts "=" * 15
puts "| Hello World |"
puts "=" * 15
هل يمكنك تخيل ما سينتجه البرنامج قبل تشغيله؟
ينتج هذا البرنامج الناتج التالي:
Output===============
| Hello World |
===============
هذا مجرد مثال صغير على كيف يمكنك جعل الكمبيوتر يقوم بالمهام المتكررة بالنسبة لك.
الختام
في هذا البرنامج التعليمي، تعلمت كيفية العمل مع نوع البيانات السلسلة في لغة البرمجة Ruby. لقد أنشأت سلاسل جديدة، ودمجتها مع سلاسل أخرى، وتعاملت مع الأسطر الجديدة، والاقتباسات، والفترات. ثم استخدمت تضمين السلسلة لجعل خلط السلاسل وقيم المتغيرات أسهل، وتعلمت كيفية تكرار السلاسل.
Source:
https://www.digitalocean.com/community/tutorials/how-to-work-with-strings-in-ruby