الفرق بين المراجعتين ل"Ruby/Dir/glob"

من موسوعة حسوب
< Ruby‏ | Dir
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:  التابع <code>glob</code> الخاص بالصنف <code>Dir</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Rub...')
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Dir]]
 
[[تصنيف: Ruby Dir]]
يستدعي التابع <code>each_child</code> الكتلة المعطاة على كل ملف من الملفات المحتواة في المجلد المحدد باستثناء "<code>..</code>" و "<code>.</code>". حيث يمُمرّر أسماء تلك الملفات كوسائط للكتلة.  
+
يستدعي التابع <code>glob</code> الكتلة المعطاة على كل ملف من الملفات المحتواة في المجلد المحدد باستثناء "<code>..</code>" و "<code>.</code>". حيث يمُمرّر أسماء تلك الملفات كوسائط للكتلة.  
  
في حال عدم تمرير أي كتلة، فسيعاد كائن من النوع [[Ruby/Enumerator|enumerator]].  
+
وسع النمط ، وهو عبارة عن سلسلة نمط أو صفيف من سلاسل النمط ، ويعيد مصفوفة تحتوي على أسماء الملفات المتطابقة. إذا تم إعطاء كتلة ، قم باستدعاء الكتلة مرة واحدة لكل اسم ملف مطابق ، واجتاز اسم الملف كمعلمة إلى الكتلة.
 +
تحدد الوسيطة الأساسية الأساسية الاختيارية الدليل الأساسي لتفسير أسماء النطاقات بدلاً من دليل العمل الحالي. بما أن النتائج لا تكون مسبوقة باسم الدليل الأساسي في هذه الحالة ، فستحتاج إلى إضافة اسم الدليل الأساسي إذا كنت تريد مسارات حقيقية.
 +
تجدر الإشارة إلى أن هذا النمط لا يمثل تعبيرًا منطقيًا ، ولكنه أقرب إلى الغلاف المتحرك. راجع File.fnmatch للتعرف على معنى معلمة العلامات. تعتمد حساسية الحالة على النظام الخاص بك (يتم تجاهل الملف :: FNM_CASEFOLD) ، كما هو الحال في الترتيب الذي يتم فيه إرجاع النتائج.
 +
<nowiki>*</nowiki>
 +
يتطابق مع أي ملف. يمكن تقييدها بقيم أخرى في الكرة الأرضية. مكافئة لـ /. * / x في regexp.
 +
<nowiki>*</nowiki>
 +
تتطابق مع كل الملفات
 +
ج *
 +
تتطابق مع جميع الملفات التي تبدأ بـ c
 +
<nowiki>*</nowiki> ج
 +
تتطابق مع جميع الملفات التي تنتهي بـ c
 +
<nowiki>*</nowiki> ج *
 +
تطابق جميع الملفات التي لديها ج فيها (بما في ذلك في البداية أو النهاية).
 +
لاحظ أن هذا لن يتطابق مع الملفات المخفية المشابهة لـ Unix (dotfiles). لتضمين النتائج في نتائج المطابقة ، يجب استخدام علامة File :: FNM_DOTMATCH أو ما شابه "{*،. *}".
 +
<nowiki>**</nowiki>
 +
تتطابق مع الدلائل بشكل متكرر.
 +
؟
 +
يطابق أي حرف واحد. مكافئة لـ /.{1}/ في regexp.
 +
[جلس]
 +
تتطابق مع أي حرف واحد في المجموعة. يتصرف بالضبط مثل مجموعات الأحرف في Regexp ، بما في ذلك تعيين negation ([^ a-z]).
 +
{ص، س}
 +
تتطابق مع p الحرفي أو حرفيا ف. أي ما يعادل تكيف نمط في regexp.
 +
قد تكون مطابقة حرفية أكثر من حرف واحد في الطول. قد يتم تحديد أكثر من حرفين حرفيين.
 +
\
 +
يهرب من الحرف الأول التالي.
 +
لاحظ أن هذا يعني أنه لا يمكنك استخدام الشرطة المائلة للخلف على النوافذ كجزء من الكرة الأرضية ، أي أن Dir ["c: \ foo *"] لن يعمل ، استخدم Dir ["c: / foo *"] بدلاً من ذلك.  
  
 
== البنية العامة ==
 
== البنية العامة ==
سطر 27: سطر 52:
  
 
== أمثلة ==
 
== أمثلة ==
مثال عن استخدام التابع <code>each_child</code> على المجلد <code>testdir</code> الذي يحتوي ملفين عاديين (<code>config.h</code> و <code>main.rb</code>) ، والمجلد الأب (<code>..</code>) ، والمجلد نفسه (<code>.</code>).<syntaxhighlight lang="ruby">
+
مثال عن استخدام التابع <code>glob</code> على المجلد <code>testdir</code> الذي يحتوي ملفين عاديين (<code>config.h</code> و <code>main.rb</code>) ، والمجلد الأب (<code>..</code>) ، والمجلد نفسه (<code>.</code>).<syntaxhighlight lang="ruby">
 
Dir.each_child("testdir") {|x| puts "Got #{x}" }
 
Dir.each_child("testdir") {|x| puts "Got #{x}" }
  
سطر 37: سطر 62:
 
== أنظر أيضًا ==
 
== أنظر أيضًا ==
 
* صفحة الصنف <code>[[Ruby/Dir|Dir]]</code>.
 
* صفحة الصنف <code>[[Ruby/Dir|Dir]]</code>.
* التابع <code>[[Ruby/Dir/foreach|foreach]]</code>: يستدعي التابع <code>each_child</code> الكتلة المعطاة على كل ملف من الملفات المحتواة في المجلد المحدد باستثناء "<code>..</code>" و "<code>.</code>". حيث يمُمرّر أسماء تلك الملفات كوسائط للكتلة. 
+
* التابع <code>[[Ruby/Dir/foreach|foreach]]</code>: يستدعي التابع <code>glob</code> الكتلة المعطاة على كل ملف من الملفات المحتواة في المجلد المحدد باستثناء "<code>..</code>" و "<code>.</code>". حيث يمُمرّر أسماء تلك الملفات كوسائط للكتلة. 
  
 
== مصادر ==
 
== مصادر ==
* [http://ruby-doc.org/core-2.5.1/Dir.html#method-c-each_child قسم  التابع each_child في الصنف Dir في توثيق روبي الرسمي.]
+
* [http://ruby-doc.org/core-2.5.1/Dir.html#method-c-each_child قسم  التابع glob في الصنف Dir في توثيق روبي الرسمي.]

مراجعة 12:38، 23 سبتمبر 2018

يستدعي التابع glob الكتلة المعطاة على كل ملف من الملفات المحتواة في المجلد المحدد باستثناء ".." و ".". حيث يمُمرّر أسماء تلك الملفات كوسائط للكتلة.

وسع النمط ، وهو عبارة عن سلسلة نمط أو صفيف من سلاسل النمط ، ويعيد مصفوفة تحتوي على أسماء الملفات المتطابقة. إذا تم إعطاء كتلة ، قم باستدعاء الكتلة مرة واحدة لكل اسم ملف مطابق ، واجتاز اسم الملف كمعلمة إلى الكتلة. تحدد الوسيطة الأساسية الأساسية الاختيارية الدليل الأساسي لتفسير أسماء النطاقات بدلاً من دليل العمل الحالي. بما أن النتائج لا تكون مسبوقة باسم الدليل الأساسي في هذه الحالة ، فستحتاج إلى إضافة اسم الدليل الأساسي إذا كنت تريد مسارات حقيقية. تجدر الإشارة إلى أن هذا النمط لا يمثل تعبيرًا منطقيًا ، ولكنه أقرب إلى الغلاف المتحرك. راجع File.fnmatch للتعرف على معنى معلمة العلامات. تعتمد حساسية الحالة على النظام الخاص بك (يتم تجاهل الملف :: FNM_CASEFOLD) ، كما هو الحال في الترتيب الذي يتم فيه إرجاع النتائج. * يتطابق مع أي ملف. يمكن تقييدها بقيم أخرى في الكرة الأرضية. مكافئة لـ /. * / x في regexp. * تتطابق مع كل الملفات ج * تتطابق مع جميع الملفات التي تبدأ بـ c * ج تتطابق مع جميع الملفات التي تنتهي بـ c * ج * تطابق جميع الملفات التي لديها ج فيها (بما في ذلك في البداية أو النهاية). لاحظ أن هذا لن يتطابق مع الملفات المخفية المشابهة لـ Unix (dotfiles). لتضمين النتائج في نتائج المطابقة ، يجب استخدام علامة 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 الكتلة المعطاة على كل ملف من الملفات المحتواة في المجلد المحدد باستثناء ".." و ".". حيث يمُمرّر أسماء تلك الملفات كوسائط للكتلة. 

مصادر