الفرق بين المراجعتين لصفحة: «Ruby/miscellaneous»
لا ملخص تعديل |
لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:صيغ متنوعة في لغة روبي}}</noinclude> | <noinclude>{{DISPLAYTITLE:صيغ متنوعة في لغة روبي}}</noinclude> | ||
= إنهاء تعبير برمجيّ = | == إنهاء تعبير برمجيّ == | ||
يعدّ السطر الجديد في لغة روبي إنهاءًا للتعبير البرمجيّ السابق. وإذا انتهى السطر بعملية أو قوس مفتوح أو فاصلة أو ما شابه، فسيستمرّ التعبير البرمجيّ إلى السطر التالي. | يعدّ السطر الجديد في لغة روبي إنهاءًا للتعبير البرمجيّ السابق. وإذا انتهى السطر بعملية أو قوس مفتوح أو فاصلة أو ما شابه، فسيستمرّ التعبير البرمجيّ إلى السطر التالي. | ||
كما بإمكانك إنهاء التعبير البرمجيّ بالفاصلة المنقوطة ; وهي تستخدم عادة مع ruby -e. | كما بإمكانك إنهاء التعبير البرمجيّ بالفاصلة المنقوطة ; وهي تستخدم عادة مع ruby -e. |
مراجعة 20:40، 18 نوفمبر 2018
إنهاء تعبير برمجيّ
يعدّ السطر الجديد في لغة روبي إنهاءًا للتعبير البرمجيّ السابق. وإذا انتهى السطر بعملية أو قوس مفتوح أو فاصلة أو ما شابه، فسيستمرّ التعبير البرمجيّ إلى السطر التالي. كما بإمكانك إنهاء التعبير البرمجيّ بالفاصلة المنقوطة ; وهي تستخدم عادة مع ruby -e.
المسافات البادئة
لا تتطلب لغة روبي أيّ نوع من المسافات البادئة، والأفضل عمومًا استخدام فراغين اثنين لإضافة المسافة البادئة. وإذا كنت تشغل اللغة بنمط تفعيل التنبيهات وكان لديك مسافات بادئة غير متطابقة فسيصلك تنبيه بذلك.
أداة alias
تستخدم كلمة alias لإعطاء أسماء متعدّدة لنفس التوابع، وبإمكانك كتابة اسم للتابع أو استخدام الرموز:
alias new_name old_name
alias :new_name :old_name
وعاد ما يستخدم Module#alias_method مع التوابع بدلًا من استخدام alias كما بإمكانك استخدام alias مع المتغيّرات العامّة:
$old = 0
alias $new $old
p $new # تطبع 0
ويمكنك استخدامها كذلك ضمن أيّ نطاق. أداة undef تمنع undef الصنف الحاليّ من الاستجابة لاستدعاءات تابع معيّن.
undef my_method
كما بإمكانك استخدام الرموز بدلًا من اسم التابع:
undef :my_method
وتستطيع تطبيقها على عدد من التوابع معًا:
undef method1, method2
وبإمكانك استخدامها ضمن أيّ نطاق. انظر صفحة التوثيق Module#undef_method لمزيد من التفاصيل.
أداة defined?
عند استدعاء defined? فإنها تعيد وصفًا لنوع المعامل الممرّر إليها:
p defined?(UNDEFINED_CONSTANT) # تطبع nil
p defined?(RUBY_VERSION) # تطبع "constant"
p defined?(1 + 1) # تطبع "method"
لست مضطرًا لاستخدام الأقواس مع defined? إلا أنّه من الأفضل استخدامها بسبب انخفاض أولويّتها. فعلى سبيل المثال إذا أردت أن تتحقّق من تعريف متغيّر ما وأنّ قيمته تساوي الصفر فكتبت التالي:
defined? @instance_variable && @instance_variable.zero?
سيكون الناتج كلمة expression وليس هذا الذي تريده في حال لم يكن المتغيّر معرّفًا
@instance_variable = 1
defined?(@instance_variable) && @instance_variable.zero?
من الأفضل إضافة الأقواس عند التحقّق من كون المتغيّر معرّفًا، وستكون النتيجة nil في حال لم يكن معرّفًا وfalse في حال كونه لا يساوي الصفر وهناك توابع مكافئة مثل instance_variable_defined? لأجل متغيّرات الحالة أو const_defned? لأجل الثوابت، هذه التوابع تعدّ أقلّ عرضة للخطأ من استخدام defined?.
BEGIN و END
تستخدم BEGIN لتعريف كتلة برمجيّة تُنفّذ قبل أي جزء آخر من الشيفرة البرمجيّة في الملفّ الحالي. وعادة ما تستخدم في العمليات البرمجية ذات السطر الواحد باستخدام ruby -e. وبالمثل، تستخدم END لتعريف كتلة برمجيّة تنفّذ بعد تنفيذ كامل الشيفرة البرمجيّة. يجب أن تُكتب BEGIN في المستوى الأعلى، وستسبب END تنبيهًا إذا استخدمت ضمن تابع. وإليك مثالًا:
BEGIN {
count = 0
}
يجب أن تستخدم الأقواس { و } ، ولا تستخدم do و end. وهذا مثال سطر برمجيّ يجمع أرقامًا مدخلة من المدخل القياسيّ أو من أيّ ملف في قائمة المعاملات.
ruby -ne 'BEGIN { count = 0 }; END { puts count }; count += gets.to_i'