المحتوى عن 'strings in ruby'.



مزيد من الخيارات

  • ابحث بالكلمات المفتاحية

    أضف وسومًا وافصل بينها بفواصل ","
  • ابحث باسم الكاتب

نوع المُحتوى


التصنيفات

  • التخطيط وسير العمل
  • التمويل
  • فريق العمل
  • دراسة حالات
  • نصائح وإرشادات
  • التعامل مع العملاء
  • التعهيد الخارجي
  • التجارة الإلكترونية
  • الإدارة والقيادة
  • مقالات ريادة أعمال عامة

التصنيفات

  • PHP
    • Laravel
    • ووردبريس
  • جافاسكريبت
    • Node.js
    • jQuery
    • AngularJS
    • Cordova
  • HTML5
  • CSS
    • Sass
    • إطار عمل Bootstrap
  • SQL
  • سي شارب #C
    • منصة Xamarin
  • بايثون
    • Flask
    • Django
  • لغة روبي
    • إطار العمل Ruby on Rails
  • لغة Go
  • لغة جافا
  • لغة Kotlin
  • برمجة أندرويد
  • لغة Swift
  • لغة R
  • لغة TypeScript
  • سير العمل
    • Git
  • صناعة الألعاب
    • Unity3D
  • مقالات برمجة عامة

التصنيفات

  • تجربة المستخدم
  • الرسوميات
    • إنكسكيب
    • أدوبي إليستريتور
    • كوريل درو
  • التصميم الجرافيكي
    • أدوبي فوتوشوب
    • أدوبي إن ديزاين
    • جيمب
  • التصميم ثلاثي الأبعاد
    • 3Ds Max
    • Blender
  • مقالات تصميم عامة

التصنيفات

  • خواديم
    • الويب HTTP
    • قواعد البيانات
    • البريد الإلكتروني
    • DNS
    • Samba
  • الحوسبة السّحابية
    • Docker
  • إدارة الإعدادات والنّشر
    • Chef
    • Puppet
    • Ansible
  • لينكس
  • FreeBSD
  • حماية
    • الجدران النارية
    • VPN
    • SSH
  • مقالات DevOps عامة

التصنيفات

  • التسويق بالأداء
    • أدوات تحليل الزوار
  • تهيئة محركات البحث SEO
  • الشبكات الاجتماعية
  • التسويق بالبريد الالكتروني
  • التسويق الضمني
  • التسويق بالرسائل النصية القصيرة
  • استسراع النمو
  • المبيعات
  • تجارب ونصائح

التصنيفات

  • إدارة مالية
  • الإنتاجية
  • تجارب
  • مشاريع جانبية
  • التعامل مع العملاء
  • الحفاظ على الصحة
  • التسويق الذاتي
  • مقالات عمل حر عامة

التصنيفات

  • الإنتاجية وسير العمل
    • مايكروسوفت أوفيس
    • ليبر أوفيس
    • جوجل درايف
    • شيربوينت
    • Evernote
    • Trello
  • تطبيقات الويب
    • ووردبريس
    • ماجنتو
  • أندرويد
  • iOS
  • macOS
  • ويندوز

التصنيفات

  • شهادات سيسكو
    • CCNA
  • شهادات مايكروسوفت
  • شهادات Amazon Web Services
  • شهادات ريدهات
    • RHCSA
  • شهادات CompTIA
  • مقالات عامة

أسئلة وأجوبة

  • الأقسام
    • أسئلة ريادة الأعمال
    • أسئلة العمل الحر
    • أسئلة التسويق والمبيعات
    • أسئلة البرمجة
    • أسئلة التصميم
    • أسئلة DevOps
    • أسئلة البرامج والتطبيقات
    • أسئلة الشهادات المتخصصة

التصنيفات

  • ريادة الأعمال
  • العمل الحر
  • التسويق والمبيعات
  • البرمجة
  • التصميم
  • DevOps

تمّ العثور على 2 نتائج

  1. تعرفنا في الدرس السابق على كيفية دمج النصوص واستيفائها وكذلك كيفية حفظها في متغيرات، وسنتابع في هذ الدرس التعرّف على القيم الحرفية للنصوص ويفية تكرارها، بالإضافة إلى كيفية إضافة أسطر جديدة ضمن النصوص الطويلة. القيم الحرفية للنصوص لاحظ أن النصوص التي كتبناها في الشيفرة البرمجية أحيطت بعلامتي تنصيص، وأن النصوص التي طُبعت كانت دون علامات التنصيص. لابد من التفرقة بين الأمرين، فالقيم الحرفية للنص هي التي تُكتب في الشيفرة البرمجية، بينما القيم النصية هي التي نراها في المُخرج ولا تحتوي على علامات التنصيص. القيمة الحرفية تكون بالشكل التالي: "Sammy the Shark" والقيمة النصية: Sammy the Shark. في أغلب الحالات لن تحتاج للقلق حول هذا الأمر إلا إذا أردت طباعة حروف خاصة مثل علامة التنصيص في النصوص التي تريدها. تهريب علامات التنصيص في النصوص تُستخدم علامات التنصيص للإشارة الى النصوص في الشيفرة البرمجية، وعليك أن تقوم ببعض العمل الإضافي إذا أردت تضمين علامات التنصيص في النص الذي تريده. لو حاولنا إضافة علامة التنصيص المنفردة في نص بالشكل التالي: 'This isn't what I wanted.' ستقوم علامة التنصيص في كلمة isn't بإنهاء النص كما تلاحظه من لون النص، ونتيجة لذلك، سيقوم مُفسر الروبي بقراءة بقية النص كشيفرة برمجية وينتج عن ذلك خطأ. وستقع في نفس المشكلة إذا قمت باستخدام علامة التنصيص المزدوجة. يوجد لدينا بعض الخيارات للتغلب على هذه المشكلة. الخيار الأول هو أنك تستطيع أن تستخدم علامة التنصيص المعاكسة للتي تم استخدامها في تعريف النص، فلو اردت تضمين علامة التنصيص المزدوجة في نصك عليك استخدم علامة التنصيص المنفردة في تعريف النص والعكس صحيح. الخيار الثاني هو تهريب علامة التنصيص (Escaping Quotes)، أو استخدام طريقة بناء مختلفة عن لغة الروبي في بناء النصوص. سنتكلم عن كل طريقة فيما يلي. الخيار الأول: استخدام علامة التنصيص البديلة الخيار الأسهل لتخطي هذه المشاكل هو إحاطة النص بعلامتي تنصيص منفردتين عندما تريد إضافة علامة تنصيص مزدوجة في نصك، وإحاطة النص بعلامتي تنصيص مزدوجتين عندما تريد إضافة علامة تنصيص منفردة. فبدلًا من استخدام علامتي تنصيص منفردتين في احاطة النص التالي: '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 والتي لا يوجد لها علامة تنصيص منفردة أخرى لإغلاقها مما يسبب ظهور خطأ. استخدام علامة التنصيص المنفردة في احاطة النص يسبب نفس المشكلة: 'Sammy says, "I'm a happy shark!"' ولكن هذه المرة فإن علامة التنصيص المنفردة هي التي تُغلق النص. استخدام علامة التنصيص البديلة يجعل الشيفرة البرمجية لديك غير مستقرة ومُحيرة في فهم النص في بعض الحالات. الخيار الثاني لحل المشكلة هو استخدام طريقة تهريب الحروف. الخيار الثاني: تهريب الحروف في النصوص الخط المائل العكسي () الذي يُعرف عادةً برمز الهروب في النصوص، هذا الخط المائل يمنع مُفسر الروبي من تفسير الحرف الذي يليه في النصوص حرفيًا. سنحل مشكلة النص التالي الذي كنا نُحاول طباعته والمُحاط بعلامتي تنصيص مزدوجتين وبداخله علامة تنصيص من نفس النوع وعلامة تنصيص منفردة: "Sammy says, "I'm a happy shark!"" لننشئ ملف باسم quoting.rb ونُضيف إليه الشيفرة التالية: quoting.rb print "Sammy says, "I'm a happy shark!"" عند تشغيل البرنامج سنحصل على الخطأ التالي: Output quoting.rb:1: syntax error, unexpected tCONSTANT, expecting end-of-input print "Sammy says, "I'm a happy shark!"" لحل هذه المشكلة نستخدم الخط المائل العكسي. نقوم بتعديل الملف ليصبح كالتالي: quoting.rb print "Sammy says, \"I'm a happy shark!\"" وعند تشغيل البرنامج سنحصل على النتيجة التالية: Sammy says, "I'm a happy shark!" لاحظ أننا لسنا بحاجة لتهريب علامة التنصيص المنفردة في وسط النص لأنها لا تسبب تعارضًا مع علامة التنصيص التي تُحيط النص. نحتاج فقط لتهريب علامة التنصيص التي تُسبب عدم مقدرة الروبي على تفسير النص. نستطيع استخدام طريقة أخرى لحل المشكلة دون تهريب علامات التنصيص عبر استخدام الخيار الثالث التالي. الخيار الثالث: استخدام طريقة مختلفة في بناء النصوص حتى الان استخدمنا علامات التنصيص لتعريف النصوص. تستطيع من خلال الروبي تعريف النصوص باستخدام علامات تختلف عن علامات التنصيص، بحيث يتم تعريف مُحدد (Delimiter) أو حرف لإحاطة النصوص عند تعريفها، ويتم ذلك بعد علامة النسبة المئوية كالتالي: %$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{ } لتعريف النصوص. العلامة%Q{ } تعمل تمامًا مثل علامة التنصيص المزدوجة، مما يعني أنك لست بحاجة لتهريب علامة التنصيص المزدوجة مع النصوص وستستطيع استخدام خاصية استيفاء النصوص أيضًا: droplets = 5 print %Q{Sammy says, "I just created #{droplets} droplets!"} العلامة %q{} تعمل تمامًا مثل علامة التنصيص المنفردة مع النصوص: %q{Sammy says, "I'm a happy shark!"} قد ترى %q و %Q مع أقواس مُربعة بدلا من أقواس مُزهرة. كما تلاحظ، يوجد العديد من الطرق لبناء النصوص في الروبي. إذا قمت باختيار إحدى الطرق في الشيفرة البرمجية فكن ثابتًا ومستقرًا عليها. ستجد أن %Q{ } و %{ } هما الأكثر استخداما. الان بعد أن تعلمنا كيفية التعامل مع الحروف والرموز الخاصة، سنتكلم عن النصوص الطويلة والأسطر الجديدة. النصوص الطويلة والأسطر الجديدة قد تحتاج في بعض الأحيان لإضافة سطر جديد. تستطيع استخدام \n أو \r لإضافة سطر جديد في النص الذي تريده: output = "This is\na string\nwith newlines" puts output ستكون نتيجة الشيفرة السابقة كالتالي: Output This is a string with newlines من ناحية عملية، الشيفرة السابقة ستجعلنا نطبع أسطر متعددة في المُخرج. على الرغم من ذلك، اذا كان السطر الذي نريد طباعته طويل نوعًا ما في الشيفرة البرمجية، سيكون من الصعب التعامل معه. يوجد بعض الحلول لذلك. الأول، تستطيع استخدام علامة الدمج لجعل النص في عدة أسطر في الشيفرة البرمجية: output = "This is a\n" + "longer string\n" + "with newlines." puts output يقوم هذا الأمر بدمج النصوص الثلاثة وطباعتها بنفس الشكل الذي تم سابقا. تستطيع أيضًا اضافة توقيفات الأسطر (Lines Breaks) بشكل مباشر في النص: output = "This is a longer string with newlines" puts output أو من خلال الطريقة التالية: output = %{This is a longer string with newlines} puts output في المثالين السابقين لم نحتاج لوضع رمز السطر الجديد (\n). وهذا يعني أن النص يتم طباعته كما يُكتب، وبذلك اذا احتوى النص على مسافات فارغة أو إزاحات فسيتم طباعتها كما هي، وسيكون ناتج المثال السابق كما يلي: Output This is a longer string with newlines لمنع ذلك وببساطة نقوم بإزالة الإزاحات من بداية كل سطر: output = %{This is a longer string with newlines } نستطيع أيضًا تعريف نصوص بأسطر متعددة باستخدام heredoc او here document وهو مصطلح يُستخدم لتعريف نص في البرامج، ويتم كتابته كالتالي: output = <<-END This is a longer string with newlines END <<-END و END تعني بداية ونهاية النص. Heredocs في الروبي تحتفظ بالمسافات الفارغة مما يعني أنه في حالة وجود إزاحات في النص المُعرف سيتم طباعته كما هو. أنظر للشيفرة التالية: output = <<-END This is a longer string with newlines END نسخة الروبي 2.3 وأعلى تقدم ما يسمى بـ “squiggly heredoc” والتي تٌزيل الإزاحات بشكل تلقائي من النص، ويتم ذلك باستبدال <<- بالعلامة <<~ : output = <<~END This is a longer string with newlines and the code is indented but the output is not. END والذي يعطينا النتيجة التالية: Output This is a longer string with newlines and the code is indented but the output is not. وهذا يُتيح لك أن تكون شيفرتك البرمجية مرتبة ومُزاحة بشكل جميل. خاصية Heredocs تدعم استيفاء النصوص. كما ترى، يوجد العديد من الطرق لمعالجة الأسطر الجديدة والنصوص المتعددة في الروبي، وسوف تقابل هذه الطرق كلما تعاملت مع مشاريع روبي أكثر حيث ستجد لكل مشروع طريقته الخاصة في الكتابة. في شيفرتك البرمجية، أختر الطريقة المناسبة لك وكن ثابتًا عليها. تكرار النصوص في بعض الأحيان قد تحتاج إلى تكرار نص معين أكثر من مرة في الروبي. تستطيع فعل ذلك باستخدام عملية التكرار التي يرمز لها بعلامة . كما في عملية الدمج +، فإن عملية التكرار لها استخدام اخر مع الأرقام حيث تقوم بتنفيذ عملية الضرب. عند استخدام العملية * مع رقم ونص فهذا يعني عملية تكرار للنص بعدد الرقم المستخدم. الشيفرة التالية تُستخدم لطباعة كلمة Sammy تسع مرات: print "Sammy" * 9 وسيكون الناتج بالشكل التالي: Output SammySammySammySammySammySammySammySammySammy هذا الأمر يتيح لك تنفيذ بعض الحركات الفنية باستخدام النصوص. لننشئ ملف باسم banner.rb ونضيف إليه الشيفرة التالية: puts "=" * 15 puts "| Hello World |" puts "=" * 15 هل تتخيل ماذا سيكون الناتج قبل تنفيذ الشيفرة؟ سيكون الناتج بالشكل التالي: Output =============== | Hello World | =============== هذا مثال صغير لكيفية استخدام الحاسوب لتكرار تنفيذ مهام معينة. خاتمة تعلمنا في هذين الدرسين كيفية التعامل مع النصوص في لغة البرمجة روبي. قمنا بإنشاء نصوص جديدة، دمجنا النصوص مع بعضها البعض، تعلمنا عدة طرق للتعامل مع الأسطر، التنصيص والفاصلة العلوية. بالإضافة لذلك، تعلمنا خاصية استيفاء النصوص التي تمكننا من استخدام النصوص والمتغيرات مع بعضها البعض وفي النهاية تعلمنا كيفية تكرار النصوص.
  2. مقدمة النص عبارة عن سلسلة تحتوي على حرف واحد أو أكثر وقد تحتوي على حروف أبجدية، أرقام ورموز. النصوص في لغة البرمجة روبي عبارة عن كائنات (Objects)، وعلى عكس لغات البرمجة الأخرى، فإن النصوص قابلة للتغيير (Mutable) والتي تعني أننا نستطيع تعديل النصوص بدلًا من إنشاء نصوص جديدة. ستستخدم النصوص في أغلب البرامج التي تكتبها، وتتيح لك النصوص عرض ما تريده للمستخدمين والتواصل معهم عبر نقل المعلومات لهم عبر الشاشة. في الحقيقة، إن النص الذي تقوم بقراءته الأن يتكون من مجموعة من النصوص المعروضة على الشاشة من خلال المتصفح. النصوص أحد أهم الأساسيات في البرمجة. في هذا الدرس، سوف تتعلم كيفية التعامل مع النصوص بلغة الروبي. سوف تُنشئ النصوص، تعرضها على الشاشة، تحفظها في متغيرات، تدمج النصوص ببعضها وستتعلم في الدرس التالي كيفية التعامل مع الرموز الخاصة مثل السطر الجديد، الفواصل وعلامات التنصيص المزدوجة. إنشاء وطباعة النصوص تُحاط النصوص بعلامتي تنصيص مزدوجة ” أو علامتي تنصيص منفردة ’ في لغة الروبي، لذلك لإنشاء نص، لابد أن تحيط مجموعة الحروف بأحد علامتي التنصيص: 'This is a string in single quotes.' "This is a string in double quotes." تستطيع أن تختار أي نوع من علامات التنصيص، وفي أغلب الحالات لا يهم أيهما تختار ما دمت ثابتًا على أحدهما. على الرغم من ذلك، فإن استخدام علامتي التنصيص المزدوجة يتيح لك إجراء ما يسمى استيفاء النص (String Interpolation) والذي سوف تتعلمه في هذا المقال. لعرض نص في برنامجك، تستطيع استخدام الوظيفة print والتي تعرض النص كما تم كتابته: print "Let's print out this string." قم بإنشاء برنامج روبي وأعطه الإسم print.rb ومن خلال محرر النصوص الخاص بك قم باستخدام الوظيفة print ثلاث مرات لطباعة نص: print.rb print 'This is the first string.' print 'This is the second string.' print 'This is the third string.' قم بحفظ الملف وتشغيله باستخدام الأمر التالي: ruby print.rb وسوف تحصل على النتيجة التالية: Output This is the first string.This is the second string.This is the third string. في الناتج الذي سبق، بدلًا من طباعة النصوص الثلاثة كلٌ في سطره، تم طباعة جميع النصوص في سطر واحد. إذا أردت أن يُطبع كل نص في سطر، يجب عليك أن تُضيف هذا السطر بنفسك وستتعلم ذلك تحت عنوان النصوص الطويلة والأسطر الجديدة، أو أن تستخدم الوظيفة put بدلًا من الوظيفة print. قم بتعديل البرنامج ومن ثم احفظ التعديل وفقا لما يلي: print.rb puts 'This is the first string.' puts 'This is the second string.' puts 'This is the third string.' الان قم بتشغيل البرنامج مرة أخرى وستحصل على النتيجة التالية: Output This 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 باستخدام محرر النصوص ونضيف الشيفرة التالية: string_variables.rb my_name = "Sammy the Shark" my_age = "none of your business" puts my_name puts my_age يقوم البرنامج بتعرف مُتغيرين my_name و my_age وكل متغير منهما تم إعطاءه قيمة نصية. بعد ذلك نقوم باستخدام الوظيفة put لطباعة كل منهما في سطر. نحفظ الملف ونقوم بتشغيله باستخدام الأمر التالي: ruby string_variables.rb ونحصل على النتيجة التالية: Output Sammy the Shark none of your business بإعطاء المتغيرات القيم النصية تستطيع تفادى إعادة كتابة النص نفسه كلَ مرة تحتاجه فيها مما يجعل العمل مع النصوص أسهل في برامجك. في العنوان التالي من المقال سنتحدث عن دمج النصوص ببعضها وإنشاء نصوص جديدة منها. دمج النصوص الدمج يعني ربط نصين أو أكثر ببعضهم لإنشاء نص جديد، ويتم باستخدام عملية الدمج التي يُشار لها بالرمز + ، ويُستخدم نفس الرمز في عملية جمع الأرقام خلال العمليات الرياضية. لدمج النصين “sammy” و “shark” نكتب ما يلي: "sammy" + "shark" وسوف نحصل على النتيجة التالية: Output sammyshark الدمج يقوم بربط النصوص من النهاية للنهاية منتجًا نصًا جديدًا. إذا أردت أن يكون هناك فراغ بين النصين فعليك أن تُضيف هذا الفراغ لأحد النصوص: "sammy " + "shark" من الأغلب أنك لن تكتب شيفرة برمجية بهذا الشكل، ولكنك ستحتاج إلى استعمال النصوص مع المتغيرات وهنا يأتي دور الدمج. انظر المثال التالي: color = "Blue" print "My favorite color is " + color الشيفرة السابقة سينتج عنها النص My favorite color is blue. لاحظ أننا تركنا فراغا بعد الكلمة is بحيث يكون الناتج يحتوي على فراغ بين اخر كلمتين. تستطيع دمج نصوص عديدة بنفس الطريقة. أنشئ ملف باسم concatenation.rb وأضف فيه الشيفرة التالية: 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 وكل منهما له قيمته النصية وطبعنا عدة نصوص ومتغيرات باستخدام عملية الدمج. عند تشغيل الشيفرة السابقة ستحصل على النتيجة التالية: Output My name is Sammy the Shark and my age is none of your business. عند استخدام عملية الدمج مع أكثر من نص فإن النتيجة هي نص جديد. هذا النص الجديد نستطيع أن نحفظه في متغير لإعادة استخدامه مرة أخرى: concatenation.rb my_name = "Sammy the Shark" my_age = "none of your business" # assign concatenated string to variable output = "My name is " + my_name + " and my age is " + my_age + "." # Print the output. puts output في مثال صغير مثل هذا لن تحتاج للمتغير output غالبًا، ولكن في برامج أكبر، من المحتمل أنك ستنشئ نص باستخدام عملية الدمج وتحفظه في متغير خاص وتستخدم هذا المتغير في أماكن متعددة. من الجيد أيضًا أن تتعود على فصل معالجة البيانات –مثل دمج النصوص والعمليات الرياضية– عن المخرجات كلما زاد حجم برنامجك، وكلما زاد حجم البرامج لديك أكثر ستحتاج لفصل العمليات المنطقية عن عمليات الإخراج في ملفات منفصلة ليسهل عليك إدارتها. تأكد من عدم استخدام عملية الدمج + بين نوعي بيانات مختلفين، فمثلًا، لن تستطيع دمج نص مع رقم بطريقة مباشرة. لتتعرف أكثر على هذه الحالة، أنشئ ملف باسم string_and_integers.rb وأضف له الشيفرة التالية: strings_and_integers.rb my_name = "Sammy the Shark" my_number = 27 print my_name + my_number لاحظ أن المتغير my_number يحمل القيمة العددية الصحيحة 27. بعد تشغيل البرنامج ستحصل على الخطأ التالي: Output strings_and_ints.rb:4:in `+': no implicit conversion of Integer into String (TypeError) from strings_and_ints.rb:4:in `<main>' الخطأ السابق يعني أننا لا نستطيع دمج متغير يحمل قيمة رقمية مع متغير آخر يحمل قيمة نصية. في نسخة الروبي 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 تم استبداله بالنوع Integer في نُسخ الروبي الجديدة. نستطيع تعديل البرنامج ليصبح المتغير my_number يحمل القيمة النصية “27” أو نقوم بتحويل القيمة الرقمية إلى نصية بالطريقة التالية: strings_and_integers.rb my_name = "Sammy the Shark" my_number = 27 print my_name + my_number.to_s الوظيفة .to_s تقوم بتحويل الرقم إلى نص. هذه الطريقة أفضل لأنها تُحافظ على نوع المتغير my_number كما هو دون تغيير، حيث قد نحتاج أن نتعامل معه كرقم في أماكن أخرى من البرنامج. قم بتشغيل البرنامج مرة أخرى وستحصل على النتيجة التالية: Sammy the Shark27. دمج الأرقام مع النصوص عملية ستتكرر معك دائما عند تعاملك مع العملات، أرقام الهواتف، الرموز البريدية وغيرها من البيانات التي تحتوي على أرقام، وعند حاجتك لعرض هذه البيانات على الشاشة كنصوص. الدمج عملية قوية ولكن لديها بعض القيود. فمثلا، إذا أزلت عملية الدمج + بشكل غير مقصود سينتج لديك خطأ، وكذلك لدمج متغير يحتوي على نوع رقم فستحتاج لتحويله لنص أولًا. تُقدم الروبي طريقة أخرى لدمج المتغيرات مع النصوص وتُسمى هذه الطريقة بـ استيفاء النصوص والتي تعالج المشكلتين السابقتين. استيفاء النصوص عند دمج النصوص والمتغيرات يكون المُخرج صعبًا في القراءة والتنقيح. طريقة استيفاء النصوص تحل لك ذلك وتسمح بتضمين العبارات في النصوص المحاطة بعلامتي تنصيص مزدوجتين. فبدلًا من كتابة ما يلي: "My name is " + my_name + "!" تستطيع كتابته بالطريقة التالية: "My name is #{my_name}!" بدلًا من استخدام العملية +، نستطيع تضمين المتغير الذي نريده باستخدام الرموز #{ } والتي تجعل روبي تقوم بتفسير التعبير وتُضمن النص الناتج عنه في النص الأصلي. البرنامج التالي يقوم بنفس عمل البرنامج السابق ولكن بطريقة استيفاء النص: 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 ليصبح كالتالي: strings_and_integers.rb my_name = "Sammy the Shark" my_number = 27 # use interpolation instead of concatenation print "My name is #{my_name} and my favorite number is #{my_number}." ستقوم الروبي بتحويل المتغير my_number إلى نص بشكل تلقائي وعند تشغيل البرنامج ستحصل على النتيجة التالية: Output My name is Sammy the Shark and my favorite number is 27. استيفاء النصوص طريقة قوية ومناسبة وهي مفضلة في دمج النصوص والمتغيرات. خاتمة تعلمنا في هذا الدرس كيفية التعامل مع النصوص في لغة البرمجة روبي. وسنتابع في الدرس التالي ماهية القيم الحرفية للنصوص وكيفية تكرارها بالإضافة إلى كيفية إضافة أسطر جديدة ضمن النصوص الطويلة. ترجمة -وبتصرّف- للمقال How to Work with Strings in Ruby لصاحبه Brian Hogan