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

من موسوعة حسوب
< Ruby‏ | Dir
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:  التابع <code>each_child</code> الخاص بالصنف <code>Dir</code> في روبي}}</noinclude> تصنيف: Ruby تصني...')
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Dir]]
 
[[تصنيف: Ruby Dir]]
يستبدل التابع <code>chdir‎</code> مجلد العمل (working directory) الحالي للعملية ويعيّن مكانه السلسلة النصية المعطاة. عند استدعائه بدون تمرير وسيط، فسيغير مجلدَ العمل إلى قيمة متغير البيئة <code>HOME</code> أو <code>LOGDIR.SystemCallError</code> (وربما <code>Errno::ENOENT</code>) إذا كان المجلد المُستهدف غير موجود.  
+
يستدعي التابع <code>each_child</code> الكتلة المعطاة على كل ملف من الملفات المحتواة في المجلد المحدد باستثناء "<code>..</code>" و "<code>.</code>". حيث يمُمرّر أسماء تلك الملفات كوسائط للكتلة.  
  
في حال إعطاء كتلة برمجية، فسيُمرّر اسم المجلد الحالي الجديد، وستنفّذ الكتلة على اعتباره المجلد الحالي. سيُستعاد مجلد العمل الأصلي عند الخروج من الكتلة. وتكون القيمة المعادة للتابع <code>chdir</code> مساوية لقيمة الكتلة.
+
في حال عدم تمرير أي كتلة، فسيعاد كائن من النوع [[Ruby/Enumerator|enumerator]].  
 
 
يمكن أن تتشعّب كتل <code>chdir</code>، ولكن في البرامج المتفرّعة (Multi-threaded) سيُطلق خطأ إذا حاول أحد المهام الفرعية (thread)  فتح كتلة <code>chdir</code> بينما نقوم مهمة فرعية أخرى بفتح آخر.
 
  
 
== البنية العامة ==
 
== البنية العامة ==
 
<syntaxhighlight lang="ruby">
 
<syntaxhighlight lang="ruby">
chdir( [ string] ) → 0
+
each_child( dirname ) {| filename | block } nil click to toggle source
chdir( [ string] ) {| path | block } → anObject
+
each_child( dirname, encoding: enc ) {| filename | block } → nil
 +
each_child( dirname ) → an_enumerator
 +
each_child( dirname, encoding: enc ) → an_enumerator
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== المعاملات ==
 
== المعاملات ==
  
=== <code>string</code> ===
+
=== <code>dirname </code> ===
يحتوي هذا المعامل عنوان مجلد العمل الجديد.
+
يحدد اسم المجلد.
 +
 
 +
=== <code>encoding</code> ===
 +
يحدد ترميز المجلد.
  
 
== القيمة المٌعادة ==
 
== القيمة المٌعادة ==
في حال تمرير كتلة فالقيمة المعادة للتابع <code>chdir</code> ستساوي قيمة تلك الكتلة.
+
في حال تمرير كتلة فالقيمة المعادة للتابع <code>chdir</code> ستكون <code>nil</code>، وإلا فسيعاد كائن من النوع [[Ruby/Enumerator|enumerator]].
  
 
== أمثلة ==
 
== أمثلة ==
أمثلة عن استخدام التابع <code>chdir‎</code>:<syntaxhighlight lang="ruby">
+
أمثلة عن استخدام التابع <code>each_child</code>:<syntaxhighlight lang="ruby">
Dir.chdir("/var/spool/mail")
+
Dir.each_child("testdir") {|x| puts "Got #{x}" }
puts Dir.pwd
+
 
Dir.chdir("/tmp") do
+
</syntaxhighlight>سينتج:<syntaxhighlight lang="ruby">
  puts Dir.pwd
+
Got config.h
  Dir.chdir("/usr") do
+
Got main.rb
    puts Dir.pwd
 
  end
 
  puts Dir.pwd
 
end
 
puts Dir.pwd
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
سطر 42: سطر 40:
  
 
== مصادر ==
 
== مصادر ==
* [http://ruby-doc.org/core-2.5.1/Dir.html#method-c-chdir قسم  التابع chdir في الصنف Dir في توثيق روبي الرسمي.]
+
* [http://ruby-doc.org/core-2.5.1/Dir.html#method-c-each_child قسم  التابع chdir في الصنف Dir في توثيق روبي الرسمي.]

مراجعة 18:14، 22 سبتمبر 2018

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

في حال عدم تمرير أي كتلة، فسيعاد كائن من النوع enumerator.

البنية العامة

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.

أمثلة

أمثلة عن استخدام التابع each_child:

Dir.each_child("testdir") {|x| puts "Got #{x}" }

سينتج:

Got config.h
Got main.rb

أنظر أيضًا

  • صفحة الصنف Dir.
  • التابع Dir[] : يكافئ التابع Dir[]‎ استدعاء Dir.glob([string,...], 0)‎. 

مصادر