التابع glob
الخاص بالصنف Dir
في روبي
يوسّع التابع glob
الوسيط الممرّر pattern
(انظر فقرة البنية العامة)، والذي هو عبارة عن سلسلة نصية نمطية (pattern string) أو مصفوفة من السلاسل النصية النمطية، ويعيد مصفوفة تحتوي أسماء الملفات المتطابقة لذلك النمط. في حال تم إعطاء كتلة (block)، فسيستدعي التابع glob
الكتلة مرة واحدة على كل اسم ملف مطابق، بحيث يمرّر اسم الملف كوسيط إلى الكتلة.
يحدد الوسيط الاختياري base
المجلد الأساسي (base directory) لتأويل أسماء المسارات (pathnames) بدلاً من مجلد العمل الحالي. بما أنّ النتائج لا تكون مسبوقة باسم المجلد الأساسي في هذه الحالة، فسيكون عليك إضافة اسم المجلد الأساسي إذا أردت الحصول على مسارات حقيقية.
تجدر الإشارة إلى أنّ هذا النمط (pattern) ليس تعبيرًا نمطيًا (regexp)، ولكنّه أقرب إلى shell glob. راجع صفحة File.fnmatch
للتعرف على معنى الوسيط flags
.
تعتمد الحساسية لحالة الحروف (Case sensitivity) على النظام الخاص بك (يتم تجاهل الملف File::FNM_CASEFOLD
) ، كما هو الحال بخصوص الترتيب الذي تٌعاد به النتائج.
* | تطابق كل الملفات. يمكن تقييدها بقيم أخرى في glob . مكافئة لـ / .* /x في regexp .
| |
* | يطابق كل الملفات | |
c* | تتطابق مع جميع الملفات التي تبدأ بـ c
| |
*c | تتطابق مع جميع الملفات التي تنتهي بـ c
| |
*c* | تطابق جميع الملفات التي تحتوي c (بما في ذلك في البداية أو النهاية) | |
لاحظ أنّ هذا لن يتطابق مع الملفات المخفية المشابهة لـ Unix (Unix-like) (). لتضمين النتائج في نتائج المطابقة ، يجب استخدام علامة File :: FNM_DOTMATCH أو ما شابه "{*،. *}". | ||
** تتطابق مع الدلائل بشكل متكرر. ؟ يطابق أي حرف واحد. مكافئة لـ /.{1}/ في regexp. [جلس] تتطابق مع أي حرف واحد في المجموعة. يتصرف بالضبط مثل مجموعات الأحرف في Regexp ، بما في ذلك تعيين negation ([^ a-z]). {ص، س} تتطابق مع p الحرفي أو حرفيا ف. أي ما يعادل تكيف نمط في regexp. قد تكون مطابقة حرفية أكثر من حرف واحد في الطول. قد يتم تحديد أكثر من حرفين حرفيين. \ يهرب من الحرف الأول التالي. لاحظ أن هذا يعني أنه لا يمكنك استخدام الشرطة المائلة للخلف على النوافذ كجزء من الكرة الأرضية ، أي أن Dir ["c: \ foo *"] لن يعمل ، استخدم Dir ["c: / foo *"] بدلاً من ذلك.
البنية العامة
each_child( dirname ) {| filename | block } → nil click to toggle source
each_child( dirname, encoding: enc ) {| filename | block } → nil
each_child( dirname ) → an_enumerator
each_child( dirname, encoding: enc ) → an_enumerator
المعاملات
dirname
يحدد اسم المجلد.
encoding
يحدد ترميز المجلد.
القيمة المٌعادة
في حال تمرير كتلة فالقيمة المعادة للتابع chdir
ستكون nil
، وإلا فسيعاد كائن من النوع enumerator.
أمثلة
مثال عن استخدام التابع glob
على المجلد testdir
الذي يحتوي ملفين عاديين (config.h
و main.rb
) ، والمجلد الأب (..
) ، والمجلد نفسه (.
).
Dir.each_child("testdir") {|x| puts "Got #{x}" }
سينتج:
Got config.h
Got main.rb
أنظر أيضًا
- صفحة الصنف
Dir
. - التابع
foreach
: يستدعي التابعglob
الكتلة المعطاة على كل ملف من الملفات المحتواة في المجلد المحدد باستثناء "..
" و ".
". حيث يمُمرّر أسماء تلك الملفات كوسائط للكتلة.