نتائج البحث

اذهب إلى التنقل اذهب إلى البحث

الصنف Enumerator::Lazy في روبي

الصنف Enumerator::Lazy هو صنف يسمح بعملية التكرار - مثل الصنف Enumerator - ولكن بالنمط الكسول (lazy fashion). توابع الصنف العامة new ينشئ كائن تعداد جديد من النوع Enumerator::Lazy. توابع النسخة العامة chunk chunk_while collect collect_concat يعيد كائن تعداد جديد من النوع Lazy مع النتائج المتسلسلة الناتجة عن تنفيذ الكتلة المعطاة مرةً واحدةً لكل عنصر من عناصر الكائن Lazy الذي استدعي معه. drop drop_while enum_for يشبه التابع Kernel.to_enum باستثناء أنه يعيد مُعدِّدًا كسولًا (كائن من النوع Enumerator::Lazy). find_all flat_map يعيد كائن ...

الأصناف الخاملة (Lazy Classes)

توصيف المشكلة وجود بعض الأصناف (classes) قليلة الاستخدام ولا أهمية لها في البرنامج، ويجدر التخلُّص منها إذ إنّ فهم وصيانة الأصناف يكلِّفان الوقت والجهد. أسبابها يكون تصميم الصنف بدايةً لأداء مهامٍ (functionality) معيّنة، ولكنّه قد يصبح صغيرًا لا أهميّة له من بعد الكثير من عمليات إعادة التصميم (refactoring). قد تُخصَّص بعض الأصناف لدعم التطوير المستقبلي للبرنامج (كالتخطيط المُسبق لميّزاتٍ ستُضاف لاحقًا)، وتصبح تلك الأصناف خاملةً عندما لا يحدث أيُّ تطويرٍ فيما بعد. وما الحل؟ تضمين الأصناف (inline classes) للعناصر (components) ...

التابع Enumerator::Lazy.new في روبي

ينشئ التابع new كائن تعداد جديد من النوع Enumerator::Lazy. عندما يُبدَأ بتعداد (enumerate) المُعدِّد (Enumerator) -عبر استدعاء التابع force مثلًا-، سيُعدَّد الكائن المُمرَّر إلى هذا التابع وستُمرَّر كل قيمة إلى الكتلة المعطاة. يمكن للكتلة أن تعيد القيمة الناتجة باستعمال yielder. البنية العامة new(obj, size=nil) { |yielder, *values| ... } المعاملات obj الكائن المراد تعداده عبر النمط الكسول (lazy). size القيمة الافتراضية هي: nil. أمثلة مثال على استعمال التابع new لإنشاء تابع باسم filter_map في النمط الكسول (lazy) وغير الكسول (non-lazy): module Enumerable ...

التابع Enumerator::Lazy.enum_for في روبي

يشبه التابع enum_for التابع Kernel.to_enum باستثناء أنه يعيد مُعدِّدًا كسولًا (كائن من النوع Enumerator::Lazy). يجعل هذا من السهل تعريف توابع الصنف Enumerable التي ستبقى كسولة بشكل طبيعي إن استدعيت من مُعدِّد كسول (lazy enumerator). البنية العامة enum_for(method = :each, *args) → lazy_enum enum_for(method = :each, *args){|*args| block} → lazy_enum المعاملات method تابع. القيمة الافتراضية هي: each:. args الوسائط المُمرَّرة إلى التابع method. القيمة المعادة يعاد مُعدِّدٌ كسولٌ (كائن من النوع Enumerator::Lazy). أمثلة المثال التالي هو تكملة للمثال الموجود في صفحة التابع Kernel.to_enum: # ...

التابع Enumerator::Lazy.to_enum في روبي

يشبه التابع to_enum التابع Kernel.to_enum باستثناء أنه يعيد مُعدِّدًا كسولًا (كائن من النوع Enumerator::Lazy). يجعل هذا من السهل تعريف توابع الصنف Enumerable التي ستبقى كسولة بشكل طبيعي إن استدعيت من مُعدِّد كسول (lazy enumerator). البنية العامة to_enum(method = :each, *args) → lazy_enum to_enum(method = :each, *args) {|*args| block} → lazy_enum المعاملات method تابع. القيمة الافتراضية هي: each:. args الوسائط المُمرَّرة إلى التابع method. القيمة المعادة يعاد مُعدِّدٌ كسولٌ (كائن من النوع Enumerator::Lazy). أمثلة المثال التالي هو تكملة للمثال الموجود في صفحة التابع Kernel.to_enum: ...

التابع Enumerator::Lazy.flat_map في روبي

يعيد التابع flat_map كائن تعداد جديد من النوع Lazy مع النتائج المتسلسلة الناتجة عن تنفيذ الكتلة المعطاة مرةً واحدةً لكل عنصر من عناصر الكائن Lazy الذي استدعي معه. ["foo", "bar"].lazy.flat_map {|i| i.each_char.lazy}.force #=> ["f", "o", "o", "b", "a", "r"] تُحلَّل (decompose) القيمة x المعادة من الكتلة إن تحقق أحد الشرطين التاليين: x تستجيب للتابعين each و force كلاهما، وهذا يعني أن x هي مُعدِّد كسول (lazy enumerator). x هي مصفوفة أو تستجيب للتابع to_ary. خلا ذلك، ستُحتَوى x كما هي في القيمة المعادة. [{a:1}, ...

التابع Enumerator::Lazy.collect_concat في روبي

يعيد التابع collect_concat كائن تعداد جديد من النوع Lazy مع النتائج المتسلسلة الناتجة عن تنفيذ الكتلة المعطاة مرةً واحدةً لكل عنصر من عناصر الكائن Lazy الذي استدعي معه. ["foo", "bar"].lazy.collect_concat {|i| i.each_char.lazy}.force #=> ["f", "o", "o", "b", "a", "r"] تُحلَّل (decompose) القيمة x المعادة من الكتلة إن تحقق أحد الشرطين التاليين: x تستجيب للتابعين each و force كلاهما، وهذا يعني أن x هي مُعدِّد كسول (lazy enumerator). x هي مصفوفة أو تستجيب للتابع to_ary. خلا ذلك، ستُحتَوى x كما هي في القيمة المعادة. [{a:1}, ...

التابع Enumerable.lazy في روبي

يعيد التابع lazy مُعدِّدًا كسولًا (lazy enumerator) تُعدِّد (enumerate) توابعه map/collect، و flat_map/collect_concat، و select/find_all، و rejectK، و grep، و grep_v، و zip، و take، و take_while، و drop، و drop_while القيم بحسب الحاجة. على أي حال، إن أعطيت كتلة لتجميع العناصر المكرَّرة وضغطها (zip)، فستُعدَّد القيم مباشرةً. البنية العامة lazy → lazy_enumerator القيمة المعادة يعاد مُعدِّدٌ كسول (lazy enumerator). أمثلة يوجد البرنامج التالي ثلاثية (مبرهنة) فيثاغورث (pythagorean triples): def pythagorean_triples (1..Float::INFINITY).lazy.flat_map {|z| (1..z).flat_map {|x| ...

التابع Enumerator.new في روبي

ينشئ التابع new كائنًا جديدًا من النوع Enumerator يمكن استعماله ككائن قابل للتعداد (Enumerable). البنية العامة new(size = nil) { |yielder| ... } new(obj, method = :each, *args) في الشكل الأول للتابع، يُعرَّف التكرار عبر الكتلة المعطاة التي يمكن استخدام الكائن yielder - المعطى كمعامل - فيها لإعادة القيمة الناتجة عبر استدعاء التابع yield (أو اسمه البديل +>>+). في الشكل الثاني - المهمل - للتابع، يتكرر مُعدِّدٌ مُولَّد عبر الكائن obj المعطى باستعمال التابع method المعطى مع تمرير الوسائط args إليه. لا يُشجَّع على ...

المخلوط Enumerable في روبي

يوفر المخلوط Enumerable مجموعة من الأصناف مع توابع بحث ونقل (traversal) عديدة قادرة على ترتيب عناصر مجموعة مع بعضها بعضًا. يجب أن يوفر الصنف التابع each الذي يعيد العضو التالي من المجموعة. إن استعمل التابع max، أو mix، أو sort، فيجب أن يُوازَن بين الكائنات في المجموعة باستعمال المعامل <=> الذي تعتمد عليه تلك التوابع في ترتيب عناصر المجموعة الواحدة مع بعضها بعضًا. توابع النسخة العامة all?‎ يتحقق إن كان كل عنصر من عناصر المجموعة التي استدعيت معه محقَّقًا للكتلة ...

الصنف Enumerator في روبي

الصنف Enumerator هو صنفٌ يسمح بتنفيذ عملية التكرار الداخلي والخارجي على الكائنات. يمكن إنشاء كائنات من هذا الصنف باستعمال إحدى التوابع التالية: Kernel.to_enum، أو Kernel.enum_for، أو new. أغلب التوابع في هذا الصنف تملك شكلين هما: الشكل الكتلي (block form) الذي تقيَّم فيه المحتويات لكل عنصر في المجموعة التعدادية، والشكل الغير كتلي (non-block form) الذي يعيد كائنًا جديدًا من النوع Enumerator يغلِّف التكرار. enumerator = %w(one two three).each puts enumerator.class # => Enumerator enumerator.each_with_object("foo") do |item, obj| puts "#{obj}: #{item}" end # foo: one # ...

الدالة withIndex()‎ في Kotlin

تعيد الدالة withIndex()‎ مجموعة تكرارية خاملة (lazy Iterable) من القيم المُفهرسة لكل محرف من محارف السلسلة التي استُدعيت معها. البنية العامة fun CharSequence.withIndex(): Iterable<IndexedValue<Char>> القيم المعادة تعاد مجموعة تكرارية خاملة (lazy Iterable) من القيم المُفهرسة لكل محرف من محارف السلسلة المعطاة. أمثلة مثالٌ على استعمال الدالة ()withIndex مع سلسلة نصية ثم إسناد الناتج الذي تعيده إلى المتغير iter، لاستخدامه في حلقة تكرارية for: fun main(args: Array<String>) { val iter = "hsoub".withIndex() for (x in iter) println(x) // المخرجات ...

الدالة withIndex()‎ في Kotlin

تعيد الدالة withIndex()‎ مجموعة تكرارية خاملة (lazy Iterable) من القيم المُفهرسة لكل عنصر من عناصر المصفوفة أو المجموعة التكرارية التي استُدعيت معها، أو تعيد مُكرّرًا (iterator) يغلّف كل عنصر أنتجه المكرّر (Iterator) المستدعى مع الدالة مع القيمة المُفهرسة أي يعيد القيمة مع فهرسها. البنية العامة يمكن استدعاء الدالة withIndex()‎ مع المصفوفات أو المجموعات التكرارية أو المكرِّرات: fun <T> Array<out T>.withIndex(): Iterable<IndexedValue<T>> fun ByteArray.withIndex(): Iterable<IndexedValue<Byte>> fun ShortArray.withIndex(): Iterable<IndexedValue<Short>> fun IntArray.withIndex(): Iterable<IndexedValue<Int>> fun LongArray.withIndex(): Iterable<IndexedValue<Long>> fun FloatArray.withIndex(): Iterable<IndexedValue<Float>> fun DoubleArray.withIndex(): Iterable<IndexedValue<Double>> fun BooleanArray.withIndex(): Iterable<IndexedValue<Boolean>> fun ...

الخاصّيّات المُعمَّمة (Delegated Properties) في لغة Kotlin

 استخدام الخاصّيّات المُعمَّمة تستطيع في لغة Kotlin تعريف استخدام (implement) الخاصّيّات يدويًا مرارًا وتكرارًا بكل مرةٍ تحتاجها، ولكن من الأسهل تعريف استخدامها مرةً واحدةً وتخزين هذا التعريف في المكتبة (library) للاستفادة منه كلما دعت الحاجة، وهذا يشمل: الخاصّيّات الكسولة (Lazy property): تُحسب قيمتها مرةً واحدةً فقط وذلك عند الوصول إليها للمرّة الأولى. الخاصّيّات المُراقَبة (observable property): إذ يُستدعَى مسؤول الانتظار (listener) عند حدوث أي تغييرٍ في الخاصّيّة. تخزين الخاصّيّات في map بدلًا من حقلٍ منفصلٍ لكلِّ منها. وتشمل لغة Kotlin ...

Python/linecache/checkcache

التابع linecache.checkcache يتحقق التابع من صلاحية محتوى الكاش بمقارنته بالملفات الأصلية، للتأكد من عدم اختلاف محتوى الملف الحقيقي عن المحتوى الموجود في الكاش، وفي حال وجود الاختلاف فإن محتوى الملف يتم حذفه من الكاش بحيث تُعاد قراءته في المرة القادمة التي يتم فيها استخدام التابع getline. ملاحظة: في حال كون أحد الملفات مقروءًا بطريقة lazycache فإن هذا التابع لا يقوم بالتحقق من تغيره، بل يتركه كسولًا، حيث كُتبت الملاحظة التالية في شيفرة الوحدة linecache if len(entry) == 1: ...

التابع Object.garbage_collect في روبي

يبدأ التابع garbage_collect عملية جمع المهملات (garbage collection)، إلّا إذا عُطِّلت يدويًا. يُعرَّف هذا التابع عبر وسائط الكلمات المفتاحية (keyword arguments) المُعيَّنة افتراضيًا للقيمة true: def GC.start(full_mark: true, immediate_sweep: true); end يمكنك تعيين القيمة false للمعامل full_mark لتنفيذ الوحدة GC الثانوية. ويمكنك تعيين القيمة false للمعامل immediate_sweep لتأجيل الكنس (sweeping، استخدام الكنس الكسول [lazy sweep]). ملاحظة: تعتمد وسائط الكلمات المفتاحية على التطبيق والاصدار المُستخدم من روبي. لا يُضمن أن تبقى متوافقةً مستقبلًا، وقد يتم تجاهلها إذا كان التطبيق الأساسي لا يدعمها. ...

الدالة enumerate()‎ في بايثون

تعيد الدّالة enumerate()‎ كائنًا قابلًا للتّكرار من النّوع enumerate. وتُستخدم لترقيم الكائنات القابلة للتّكرار. البنية العامة enumerate(iterable, start=0) المعاملات iterable كائن يدعم التّكرار (iteration)، مثل القوائم، والصّفوف والمولّدات والمكرّرات وغيرها. start العدد الذي سيبدأ منه التّرقيم، القيمة الافتراضيّة هي 0. القيمة المعادة كائن قابل للتّكرار من النّوع enumerate. يكون عبارة عن أزواج، الجزء الأول يكون رقم العنصر، والجزء الثّاني يكون العنصر نفسه. أمثلة المثال التّالي يوضّح كيفيّة عمل هذه الدّالة: >>> seasons = ['Spring', 'Summer', 'Fall', 'Winter'] # قائمة بايثون ...

Ruby/Topics

تثبيت روبي توجد طرائق عدَّة لتنزيل وتثبيت روبي على كل منصة وهي: إمَّا استعمال أنظمة مدير الحزم، أو باستعمال المثبِّتات التلقائية، أو باستعمال مدراء روبي. هنالك طريقة أخرى يمكنك بالتأكيد استعمالها لتثبيت روبي وتصريف شيفراتها وهي بنائها من الشيفرة المصدرية مباشرةً. حول روبي يوفر هذا القسم لمحة سريعة عن لغة روبي ونشأتها، وتطورها، ومزاياها التي انفردت بها عن اللغات الأخرى، والتنفيذات المختلفة التي تملكها. البنية العامة بنية اللغة تعد روبي مزيجًا من اللغات البرمجية التالية: Perl، و Smalltalk، و Eiffel، ...

التعابير الاصطلاحية (Idioms) في لغة Kotlin

تعرِض هذه الصفحة عددًا من التعابير الاصطلاحيّة المستخدَمة بكثرةٍ في لغة Kotlin، ولأيّ اصطلاحٍ جديدٍ لم يُذكَر فيمكنك تعديل هذه الصفحة لإضافته. إنشاء كائنات نقل البيانات DTO:‏ Data Transfer Objects (الكائنات POJO/POCO) ليكن الصنف (class) الآتي باسم Customer: data class Customer(val name: String, val email: String) وله التوابع الوظيفيّة (functional methods) الآتية: توابع getter (وتوابع setter في حالة المتحولات من النوع var) لكافة الخاصّيّات (properties) equals()‎ hashCode()‎ toString()‎ copy()‎ component1()‎ و component2()‎ ...إلخ. وذلك لكافة الخاصّيّات (properties) في الصنف (راجع أصناف البيانات ...

RegExp.prototype.exec()‎

الدالة RegExp.prototype.exec()‎ تجرى بحثًا عن مطابقة للتعبير النمطي في السلسلة النصية المُحدَّدة، وتُعيد مصفوفة النتائج، أو القيمة null. إذا كانتَ تريد تنفيذ البحث لمعرفة إن كانت القيمة موجودةً أم لا فاستخدام الدالة RegExp.prototype.test()‎ أو الدالة String.prototype.search()‎. البنية العامة regexObj.exec(str) str السلسلة النصية التي سنبحث عن مُطابَقة للتعبير النمطي فيها. القيمة المعادة إذا نجحت عملية المطابقة، فستُعيد الدالة exec()‎ مصفوفةً وتُحدِّث خاصيات كائن التعابير النمطية. المصفوفة المعادة ستحتوي على النص المُطابَق في أوّل عنصر فيها، ثم العناصر التي تليه ستحتوي على ...

الدالة wordwrap()‎ في PHP

(PHP 4, PHP 5, PHP 7) تُجري الدالة wordwrap()‎ التفافًا (wrap) للسلسلة النصيَّة الممرَّرة إليها عند عدد محدَّد من المحارف. الوصف string wordwrap ( string $str [, int $width = 75 [, string $break = "\n" [, bool $cut = FALSE ]]] ) تؤمِّن هذه الدالة التفاف السلسلة النصيَّة str عند عدد محدَّد من المحارف وباستعمال محرف مخصَّص لفصل تلك السلسلة. المعاملات str السلسلة النصيَّة المراد إجراء التفاف لها. width عدد المحارف التي ستَلتفُّ عندها السلسلة النصيَّة str. break معامل اختياري ...

الدالة preg_replace()‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ في PHP

(PHP 4, PHP 5, PHP 7) تبحث الدالة preg_replace()‎‎‎ عن تعبير نمطي وتستبدله. الوصف mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) تبحث هذه الدالة في الهدف subject عن النمط المطابق pattern وتبدله إلى replacement. المعاملات pattern النمط المراد البحث عنه. ويمكن أن يكون إما سلسلةً نصيةً أو مصفوفةً من السلاسل النصية. وتتوافر أيضًا العديد من مُعدِّلات PCRE. replacement السلسلة النصية البديلة أو مصفوفة السلاسل النصية البديلة. إذا ...

هدم التسلسل الهرمي (Collapse Hierarchy)

المشكلة في التسلسل الهرمي لصنف، يكون صنفٌ فرعي هو عمليًا نفس صنفه الأب. الحل دمج الصنف الفرعي والصنف الأب. مثال قبل إعادة التصميم الصنف الفرعي Salesman هو عمليًّا نفس الصنف Employee له: الصنفٌ الفرعي هو عمليًا نفس صنفه الأب. بعد إعادة التصميم دمج الصنف الفرعي Salesman في الصنف الأب: دمج الصنف الفرعي والصنف الأب. لم إعادة التصميم؟ قد يؤدي نمو البرنامج مع مرور الوقت إلى أن يصبح كلٌ من الصنف الفرعي والصنف الأب تقريبًا نفس الشيء. فتُزال ميزة من الصنف ...

الأجزاء الفائضة (Dispensables)

وهي الأجزاء عديمة النفع في الشيفرة، وسيجعلُ التخلُّصُ منها الشيفرةَ نظيفةً يسيرة الفهم وأكثر فعاليّة، منها: التعليقات (comments) المشكلة: وجود الكثير من التعليقات في التوابع (methods) بهدف الشرح التفصيليّ للشيفرة. الحل: يكون الحل بناءً على الحالة المستعملة وهو: تقسيم التعبير الواحد إلى تعابيرَ فرعيّة (subexpressions) بالاعتماد على استخراج المتغيِّرات، أو عزل ذلك المقطع في تابعٍ (method) جديدٍ باسمٍ معبِّر، أو إعادة تسمية التابع (rename method) لاسمٍ يشرح ذاته بذاته، أو إضافة التأكيدات. تكرار  الشيفرة (duplicates) المشكلة: التشابه (أو التطابق المطلق) بين مقطعين من الشيفرة ...

التغليف الداخلي للحقول (Self Encapsulate Fields)

ملاحظة قبل البدء: تختلف هذه التقنية عن تقنية تغليف الحقول (Encapsulate Field) من حيث أنّها تُستخدَم لتغليف الحقول الخاصّة (أي المُحدَّدة بالكلمة المفتاحيّة private). المشكلة الوصول المباشر إلى الحقول الخاصّة (private fields) داخل الصنف (class). الحل إنشاء تابعي الوصول getter و setter للحقل الخاصّ ومنع الوصول إليه إلا عبرهما. مثال قبل إعادة التصميم يحتوي الصنف Range على الحقلين low و high من النوع الخاص (private) ونلاحظ الوصول إليهما مباشرةً داخل التابع includes في الشيفرة الآتية: في لغة Java: class Range ...

التابع ARGF.each_char()‎ في روبي

يعيد التابع each_char قيمة قابلة للعد (enumerator) تتكرر (Iterate) على كل قيمة من النوع char في الملفات الموجودة في ARGV. يسمح لك هذا التابع بمعالجة الملفات المُمرَّرة من سطر الأوامر كما لو كانت ملفًا واحدًا مكونًا من سلسلة من هذه الملفات المسماة. بعد إعادة الحرف الأخير من الملف الأول، سيُعاد الحرف الأول من الملف الثاني. يمكن استخدام التابع ARGF.filename لمعرفة اسم الملف الذي ينتمي إليه الحرف الحالي. في حال عدم تمرير كتلة برمجية، فسيُعاد كائن من النوع enumerator. البنية العامة each_char {|char| block } → ...

التابع ARGF.each_codepoint()‎ في روبي

يعيد التابع each_codepoint قيمة قابلة للعد (enumerator) تتكرر (Iterate) على كل قيمة من النوع codepoint في الملفات الموجودة في ARGV. يسمح لك هذا التابع بمعالجة الملفات المُمرَّرة من سطر الأوامر كما لو كانت ملفًا واحدًا مكونًا من سلسلة من هذه الملفات المسماة. بعد إعادة آخر codepoint من الملف الأول، ستعاد أول codepoint من الملف الثاني. يمكن استخدام التابع ARGF.filename لمعرفة اسم الملف الذي ينتمي إليه الحرف الحالي. في حال عدم تمرير كتلة برمجية، فسيُعاد كائن من النوع enumerator. البنية العامة each_char {|char| block } → ...

التابع ARGF.each_char()‎ في روبي

يعيد التابع each_char قيمة قابلة للعد (enumerator) تتكرر (Iterate) على كل قيمة من النوع char في الملفات الموجودة في ARGV. يسمح لك هذا التابع بمعالجة الملفات المُمرَّرة من سطر الأوامر كما لو كانت ملفًا واحدًا مكونًا من سلسلة من هذه الملفات المسماة. بعد إعادة الحرف الأخير من الملف الأول، سيُعاد الحرف الأول من الملف الثاني. يمكن استخدام التابع ARGF.filename لمعرفة اسم الملف الذي ينتمي إليه الحرف الحالي. في حال عدم تمرير كتلة برمجية، فسيُعاد كائن من النوع enumerator. البنية العامة each_char {|char| block } → ...

 التابع ENV.each في روبي

يجلب التابع each‎ أسماء وقيم متغيرات البيئة بالتتابع، ويرسلها فُرادى إلى الكتلة البرمجية المعطاة. في حال عدم تمرير كتلة برمجية إلى التابع، فسيعيد كائنًا من النوع Enumerator. البنية العامة each { |name, value| } → Hash each → Enumerator each_pair { |name, value| } → Hash each_pair → Enumerator القيمة المعادة يعاد كائن من النوع Hash بعد تمرير اسم وقيمة كل متغير من متغيرات البيئة إلى الكتلة المعطاة على حدة، أو يعاد كائن من النوع Enumerator في حال عدم تمرير أي كتلة برمجية. ...

التابع ARGF.each_byte()‎ في روبي

يعيد التابع each_byte قيمة قابلة للعد (enumerator) تتكرر (iterates) على كل قيمة من النوع Byte في الملفات الموجودة في ARGV. يسمح لك هذا التابع بمعالجة الملفات المُمرَّرة من سطر الأوامر كما لو كانت ملفًا واحدًا مكونًا من سلسلة من هذه الملفات المسماة. بعد إعادة البتة (byte) الأخيرة من الملف الأول، ستُعاد البتة الأولى من الملف الثاني. يمكن استخدام التابع ARGF.filename لمعرفة اسم الملف للبتة الحالية. في حال عدم تمرير كتلة برمجية، فسيُعاد كائن من النوع enumerator. البنية العامة each_byte {|byte| block } → ARGF each_byte → ...

التابع ARGF.each_byte()‎ في روبي

يعيد التابع each_byte قيمة قابلة للعد (enumerator) تتكرر (iterates) على كل قيمة من النوع Byte في الملفات الموجودة في ARGV. يسمح لك هذا التابع بمعالجة الملفات المُمرَّرة من سطر الأوامر كما لو كانت ملفًا واحدًا مكونًا من سلسلة من هذه الملفات المسماة. بعد إعادة البتة (byte) الأخيرة من الملف الأول، ستُعاد البتة الأولى من الملف الثاني. يمكن استخدام التابع ARGF.filename لمعرفة اسم الملف للبتة الحالية. في حال عدم تمرير كتلة برمجية، فسيُعاد كائن من النوع enumerator. البنية العامة each_byte {|byte| block } → ARGF each_byte → ...

 التابع ENV.select في روبي

يعيد التابع select‎ نسخة من البيئة (environment) تضم المدخلات التي حقَّقت شرطًا معيَّنًا. في حال عدم تمرير أي كتلة برمجية إلى التابع، فسيعيد كائنًا من النوع enumerator. البنية العامة select { |name, value| } → Hash select → Enumerator القيمة المعادة يُعاد كائن من النوع Hash يحوي نسخة من البيئة تضم المدخلات (entries) التي أعيدت القيمة true معها عند تمريرها إلى الكتلة البرمجية. وفي حال عدم تمرير أية كتلة برمجية، فسيُعاد كائن من النوع enumerator. انظر أيضًا التابع inspect: يعيد محتوى البيئة (environment) ...

التابع Module.ancestors‎ في روبي

يعيد التابع ancestors قائمة مكونة الوحدات المُتضمنة/المضافة إلى الوحدة التي استُدعيت معها (بما في ذلك الوحدة نفسها). البنية العامة ancestors → array‎ القيمة المعادة تعاد قائمة مكونة الوحدات المُتضمنة/المضافة إلى الوحدة المعطاة (بما في ذلك الوحدة نفسها). أمثلة مثال على استخدام التابع ancestors‎: module Mod include Math include Comparable prepend Enumerable end Mod.ancestors #=> [Enumerable, Mod, Comparable, Math] Math.ancestors #=> [Math] Enumerable.ancestors #=> [Enumerable]‎ انظر أيضا التابع alias_method: ينشئ اسمًا ...

التابع Enumerable.each_entry في روبي

يستدعي التابع each_entry الكتلة المعطاة مرةً واحدةً على كل عنصر من عناصر الكائن القابل للتعداد الذي استدعي معه. إن لم تُعطَ الكتلة، فسيُعيد التابع كائنًا من النوع Enumerator. البنية العامة each_entry { |obj| block } → enum each_entry → an_enumerator القيمة المعادة يعاد كائن من النوع Enumerator يحوي نتائج استدعاء الكتلة مرةً واحدةً على كل عنصر من عناصر الكائن القابل للتعداد المعطى، أو يعاد كائنٌ جديد من النوع Enumerator إن لم تُعطَ الكتلة. أمثلة مثال على استعمال التابع each_entry: class Foo include ...

 التابع ENV.keep_if في روبي

يُبقِي التابع keep_if كل متغيرات البيئة التي تحقِّق شرطًا معيَّنًا ويحذف البقية. في حال لم تمرَّر أية كتلة برمجية إلى التابع، فسيعيد كائنًا من النوع enumerator. البنية العامة keep_if { |name, value| } → Hash keep_if → Enumerator القيمة المعادة يعاد كائن من النوع Hash بعد حذف متغيرات البيئة التي أعيدت معها القيمة false عند تمريرها إلى الكتلة المعطاة، أو يعاد كائن من النوع enumerator في حال عدم تمرير أية كتلة. انظر أيضًا التابع clear: يحذف جميع متغيرات البيئة. التابع delete: يحذف متغير ...

 التابع ‎ENV.select!‎ في روبي

التابع select!‎ مكافئ للتابع keep_if لكنه يعيد القيمة nil إن لم يُحدِث أي تغيير في البيئة. في حال عدم تمرير أي كتلة برمجية إلى التابع، فسيعد كائنًا من النوع enumerator. select! { |name, value| } → ENV or nil select! → Enumerator القيمة المعادة يُعاد كائنٌ من الصنف ENV بعد اكتمال تنفيذ العملية أو تُعاد القيمة nil إن لم يحدث أي تغيير، أو يعاد كائنٌ من النوع enumerator في حال عدم تمرير أي كتلة برمجية. انظر أيضًا التابع keep_if: يبقي متغيرات البيئة التي تحقِّق شرطًا ...

التابع Object.to_enum في روبي

يُنشئ التابع enum_for نسخةً من الصنف Enumerator الذي يجري عملية عدٍّ (enumerate) وتكرار عبر استدعاء التابع المُمرَّر إليها مع كائنٍ محدَّد، وتمرير وسائط إن أعطيت. إذا مُرِّرت كتلة (block) إلى التابع، فستُستخدم لحساب حجم نسخة الصنف Enumerator دون الحاجة إلى تكرارها (ألقِ نظرة على التابع Enumerator.size). البنية العامة enum_for(method = :each, *args) → enum enum_for(method = :each, *args){|*args| block} → enum المعاملات method التابع المُمرَّر. القيمة الافتراضية لهذا المعامل هي: each:. args* الوسائط المراد تمريرها إلى التابع. args| block*| الكتلة ووسائطها ...

 التابع ENV.each_value في روبي

يجلب التابع each_value‎ قيمة كل متغير من متغيرات البيئة بالتتابع، ويرسلها إلى الكتلة البرمجية المعطاة. في حال عدم تمرير كتلة برمجية، فسيعيد التابع كائنًا من النوع Enumerator. البنية العامة each_value { |value| } → Hash each_value → Enumerator القيمة المعادة يعاد كائن من النوع Hash بعد تمرير قيمة كل متغير من متغيرات البيئة إلى الكتلة المعطاة على حدة، أو يعاد كائن من النوع Enumerator في حال عدم تمرير أي كتلة برمجية. انظر أيضًا التابع each‎ : يجلب أسماء وقيم متغيرات البيئة بالتتابع، ...

 التابع ‎ENV.reject!‎ في روبي

التابع reject!‎ مشابه للتابع delete_if لكنه يعيد القيمة nil إن لم يحدث أي تغيير في البيئة. في حال عدم تمرير أي كتلة برمجية، فسيُعاد كائنٌ من النوع enumerator. reject! { |name, value| } → ENV or nil reject! → Enumerator القيمة المعادة يُعاد كائن من الصنف ENV إن أُعيدت معه القيمة true بعد تمريره إلى الكتلة المعطاة، أو تُعاد القيمة nil إن لم يحدث أي تغيير، أو يُعاد كائنٌ من النوع enumerator في حال عدم تمرير أية كتلة برمجية. انظر أيضًا التابع delete: يحذف متغير بيئة ...

 التابع ENV.each_key في روبي

يجلب التابع each_key‎ أسماء متغيرات البيئة بالتتابع، ويرسلها فُرادَى إلى الكتلة البرمجية المعطاة. في حال عدم تمرير كتلة برمجية فسيعيد كائنًا من النوع Enumerator. البنية العامة each_key { |name| } → Hash each_key → Enumerator القيمة المعادة يعاد كائن من النوع Hash بعد تمرير اسم كل متغير من متغيرات البيئة إلى الكتلة المعطاة على حدة، أو يعاد كائن من النوع Enumerator في حال عدم تمرير أي كتلة برمجية. انظر أيضًا التابع each‎: يجلب أسماء وقيم متغيرات البيئة بالتتابع، ويرسلها فُرادى إلى ...

التابع Object.enum_for في روبي

يُنشئ التابع enum_for نسخةً من الصنف Enumerator الذي يجري عملية عدٍّ (enumerate) وتكرار عبر استدعاء التابع المُمرَّر إليها مع كائنٍ محدَّد، وتمرير وسائط إن أعطيت. إذا مُرِّرت كتلة (block) إلى التابع، فستُستخدم لحساب حجم نسخة الصنف Enumerator دون الحاجة إلى تكرارها (ألقِ نظرة على التابع Enumerator.size). البنية العامة enum_for(method = :each, *args) → enum enum_for(method = :each, *args){|*args| block} → enum المعاملات method التابع الذي ستُطبَّق عليه العملية. القيمة الافتراضية لهذا المعامل هي: each:. args* الوسائط المراد تمريرها إلى التابع. args| ...

 التابع ENV.each_pair في روبي

يجلب التابع each_pair‎ الزوج اسم/قيمة لكل متغير من متغيرات البيئة بالتتابع، ويرسله إلى الكتلة البرمجية المعطاة. في حال عدم تمرير كتلة برمجية إلى التابع، فسيُعيد كائنًا من النوع Enumerator. البنية العامة each_pair { |name, value| } → Hash each_pair → Enumerator القيمة المعادة يعاد كائن من النوع Hash بعد تمرير الزوج اسم/قيمة لكل متغير من متغيرات البيئة إلى الكتلة المعطاة على حدة، أو يعاد كائن من النوع Enumerator في حال عدم تمرير أي كتلة برمجية. انظر أيضًا التابع each‎: يجلب أسماء ...

اختلال الشيفرات ومشاكلها (Code Smells)

قد تعاني الشيفرات الكثير من الاختلالات والمشاكل الشكلية؛ فبمجرد اكتشاف تلك الاختلالات الظاهرية، يسهل علينا معرفة العلاج (التقنيات) وتطبيقه (إعادة التصميم) للحصول على شيفرة سليمة نظيفة. من هذه الاختلالات: المبالغة والإطالة قد يزداد حجم الشيفرات والتوابع (methods) والأصناف (classes) ازديادًا كبيرًا ليصل لمرحلةٍ يصعُب التعامل معها، ولا يحدث هذا بشكلٍ فجائيِّ دفعةً واحدةً، بل يكون ناتجًا عن تراكم الإضافات أثناء تطوير البرنامج (وخاصةً عندما لا يبذل أحدٌ جهدًا للحدِّ من ذلك التشعب)، ويبدو هذا التضخم واضحًا التوابع الطويلة (long methods): ...

التابع Enumerable.collect_concat في روبي

يعيد التابع collect_concat مصفوفة جديدة مع نتائج متصلة لتنفيذ الكتلة المعطاة مع كل عنصر من عناصر المُعدِّد الذي استدعي معه. إن لم تُعطَ أية كتلة، فسيعيد التابع كائنًا من النوع Enumerator. البنية العامة collect_concat { |obj| block } → array collect_concat → an_enumerator القيمة المعادة تعاد مصفوفة تحوي نتائج تنفيذ الكتلة المعطاة بشكل متصل (concatenated) مع كل عنصر من عناصر المُعدِّد المعطى، أو يعاد كائن من النوع Enumerator إن لم تُعطَ أية كتلة. أمثلة مثال على استعمال التابع collect_concat: [1, 2, 3, 4].collect_concat ...

التابع Enumerator.each_with_object في روبي

يكرر التابع each_with_object الكتلة المعطاة على كل عنصر من عناصر الكائن الذي استدعي معه مع كائن آخر اعتباطي (الكائن المُمرَّر إليه). إن لم تُعطَ أية كتلة، فسيعيد التابع كائنًا جديدًا من النوع Enumerator. البنية العامة each_with_object(obj) {|(*args), obj| ... } each_with_object(obj) المعاملات obj الكائن الذي سيُكرَّر مع كل عنصر من عناصر الكائن المعطى. القيمة المعادة يعاد الكائن obj المعطى، أو يعاد كائن جديد من النوع Enumerator إن لم تُعطَ أية كتلة. أمثلة مثال على استعمال التابع each_with_object: to_three = Enumerator.new do |y| ...

التابع Enumerator.size في روبي

يكرِّر التابع with_index الكتلة المعطاة على كل عنصر من عناصر المُعدِّد الذي استدعي معه مع فهارسها والتي تبدأ عند موضع محدَّد. إن لم تُعطَ الكتلة، فسيعيد التابع كائنًا جديدًا من النوع Enumerator يحوي تلك الفهارس. البنية العامة with_index(offset = 0) {|(*args), idx| ... } with_index(offset = 0) المعاملات offset عدد صحيح يحدِّد فهرس العنصر المراد بدء عملية التكرار عنده. القيمة الافتراضية هي: 0. القيمة المعادة يعاد الناتج الذي تعيده الكتلة بعد تكرارها على كل عنصر من عناصر المُعدِّد المعطى مع فهارسها والتي ...

التابع Enumerator.with_object في روبي

يكرِّر التابع with_object الكتلة المعطاة على كل عنصر من عناصر المُعدِّد الذي استدعي معه مع كائن اعتباطي (الكائن المُمرَّر إليه) ثم يعيد هذا الكائن. إن لم تُعطَ الكتلة، فسيعيد التابع كائنًا جديدًا من النوع Enumerator. البنية العامة with_object(obj) {|(*args), obj| ... } with_object(obj) المعاملات obj الكائن الذي سيُكرَّر مع كل عنصر من عناصر الكائن المعطى. القيمة المعادة يعاد الكائن obj المعطى، أو يعاد كائن جديد من النوع Enumerator إن لم تُعطَ أية كتلة. أمثلة مثال على استعمال التابع with_object: to_three = Enumerator.new do |y| 3.times ...

التابع Enumerable.reverse_each في روبي

ينشئ التابع reverse_each مصفوفة مؤقتة تحوي عناصر الكائن القابل للتعداد ثم يمر عليها (يستعملها) بترتيب معاكس. إن لم تُعطَ أية كتلة، فسيعيد التابع كائنًا جديدًا من النوع Enumerator. البنية العامة reverse_each(*args) { |item| block } → enum reverse_each(*args) → an_enumerator المعاملات args الوسائط المراد استعمالها في العملية. القيمة المعادة يعاد ناتج تنفيذ الكتلة block على عناصر الكائن القابل للتعداد بترتيب معاكس بعد وضعها في مصفوفة مؤقتة، أو يعاد كائن جديد من النوع Enumerator. أمثلة مثال على استعمال التابع reverse_each: (1..3).reverse_each { |v| p ...

التابع Enumerator.rewind في روبي

يعيد التابع rewind موضع مؤشر السلسلة التعدادية (enumeration sequence) إلى البداية. إن استجاب كائن مغلق (enclosed object) إلى التابع rewind، فسيُستدعَى حينئذٍ. البنية العامة rewind → e القيمة المعادة تعاد e. انظر أيضًا التابع next: يعيد الكائن التالي في المُعدِّد الذي استدعي معه، ويحرك موضع المؤشر الداخلي للأمام خطوة واحدة. التابع peek: يعيد الكائن التالي في المُعدِّد الذي استدعي معه ولكن لا يحرِّك موضع المؤشر الداخلي للأمام.  مصادر قسم التابع rewind في الصنف Enumerator في توثيق روبي الرسمي.

التابع Array.drop_while في روبي

يحذف التابع drop_while عناصر المصفوفة الأولى التي تحقِّق شرطًا محدَّدًا ثمَّ يعيد مصفوفة جديدة تحوي بقية العناصر. إن لم تمرَّر أيَّة كتلة، فسيعيد التابع drop_while كائنًا من النوع Enumerator. البنية العامة drop_while { |obj| block } → new_ary drop_while → Enumerator القيم المعادة تعاد مصفوفة جديدة تحوي جميع عناصر المصفوفة المعطاة باستثناء العناصر الأولى التي تعيد كل منها القيمة true عند تطبيق الكتلة البرمجيَّة block عليها، أو يعاد كائنٌ من النوع Enumerator إن لم تعطَ الكتلة block. أمثلة مثالٌ على ...

عرض (50 السابقة | 50 التالية) (20 | 50 | 100 | 250 | 500).